Nothing wrong in your code. My guess is probably the order you draw each image makes the difference.For example if you draw images in the following order BGImage ,image1 , image2 and so on.
What opengl do is, it takes your draw call order for blending images. After drawing BGImage in framebuffer, then it blends image1 and framebuffer, then draws the result again in framebuffer. Then it blends image2 and framebuffer, then draws the result again in framebuffer and so on.
So if image1 overlaps image2, image1 blends with BGimage not with image2.