Я не знаю о OpenGL, но один пиксель непрозрачности A обычно рисуется на другом пикселе, например:
result.r = background.r * (1 - A) + foreground.r * A
result.g = background.g * (1 - A) + foreground.g * A
result.b = background.b * (1 - A) + foreground.b * A
Повторите эту операцию для нескольких пикселей.