+2  A: 

I'd say it's because your semi-transparent square gets added to the existing pixels, thus incrementing their intensity.

The documentation for glBlendFunc() recommends setting the second parameter to GL_ONE_MINUS_SRC_ALPHA, that is the boilerplate for implementing transparency. Try it.

unwind
Yeah, looks like a white translucent square, I don't see the problem.
Karl
Excellent, thanks! GL_ONE_MINUS_SRC_ALPHA fixed the problem.
nbolton