Я бы сказал, что это потому, что ваш полупрозрачный квадрат добавляется к существующим пикселям, увеличивая тем самым их интенсивность.
В документации для glBlendFunc()
рекомендуется установить второй параметр на GL_ONE_MINUS_SRC_ALPHA
, который является образцом для реализации прозрачности. Попробуй.