I took a look at an example and saw what you meant, Unfortunately the only way to avoid that is to:
1) Disable depth testing while using blending.
2) Write your own scene graph which will handle it for you
Heres the code I used to test what happens, Comment out both the glDisable() states in the main loop and you get an example of what you meant:
Strict
GLGraphics 800, 600
Global Texture = LoadPixmap("tex.png")
Global GLTex = GLTexFromPixmap(Texture)
Global Z:Float = 2.0
glEnable(GL_BLEND)
glEnable(GL_TEXTURE_2D)
glBlendFunc(GL_SRC_ALPHA, GL_ONE)
gluPerspective(45.0, Float(800) / Float(600), 1.0, 1000.0)
While Not KeyDown(KEY_ESCAPE)
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT)
glBindTexture(GL_TEXTURE_2D, GLTex)
glEnable(GL_ALPHA_TEST)
glDisable(GL_DEPTH_TEST)
glPushMatrix()
glBegin(GL_QUADS)
glTexCoord2f (0.0, 0.0)
glVertex3f (-5.0, -5.0, -20.0)
glTexCoord2f (1.0, 0.0)
glVertex3f (5.0, -5.0, -20.0)
glTexCoord2f (1.0, 1.0)
glVertex3f (5.0, 5.0, -20.0)
glTexCoord2f (0.0, 1.0)
glVertex3f (-5.0, 5.0, -20.0)
glEnd()
glPopMatrix()
glPushMatrix()
If KeyDown(KEY_W) Z :- 0.1
If KeyDown(KEY_S) Z :+ 0.1
glTranslatef(2.0, 0.0, Z)
glBegin(GL_QUADS)
glTexCoord2f (0.0, 0.0)
glVertex3f (-5.0, -5.0, -20.0)
glTexCoord2f (1.0, 0.0)
glVertex3f (5.0, -5.0, -20.0)
glTexCoord2f (1.0, 1.0)
glVertex3f (5.0, 5.0, -20.0)
glTexCoord2f (0.0, 1.0)
glVertex3f (-5.0, 5.0, -20.0)
glEnd()
glPopMatrix()
glEnable(GL_DEPTH_TEST)
glDisable(GL_ALPHA_TEST)
GLDrawText("Press ESC To Quit... W / S = Forward / Back", 10, 10)
Flip
Wend
End