Есть ли у вашего изображения предварительно умноженная альфа? Тогда вы должны использовать
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
Здесь - некоторые объяснения того, что это такое.
Примечание: Я переписал ответ после некоторого исследования. В упомянутой статье rotoglup есть некоторое понимание того, что происходит, и это имеет больше смысла, чем моя первоначальная формула. Я также пытался увидеть, что другие люди используют в своем коде, и, похоже, эта формула является наиболее используемой. Удивительно, как такая базовая вещь в трехмерной графике, как альфа-смешение, может быть настолько противоречивой, и каждый, кажется, заново изобретает колесо и предлагает свои собственные решения.