Yes, I know that, thanks. I was pointing out that they take different parameters because it sounded like he was not aware of that.
Allegro uses pre multiplied alpha blending by default, for various reasons.
// pre multiplied alpha blender, this is the default
al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA)
r = dr * dst + sr * src
g = dg * dst + sg * src
b = db * dst + sb * src
a = da * dst + sa * src
With src of (0,255,0,0) and dst of (1,0,0,?)
r = dr*(1-sa) + sr*1.0
g = dg*(1-sa) + sg*1.0
b = db*(1-sa) + sb*1.0
r = 1.0*(1-0) + 0*1 = 1
g = 0*(1-0) + 1*1 = 1
b = 0*(1-0) + 0*1 = 0
Which is yellow, and is exactly what you were getting.
If you are using non-pre-multiplied alpha, you could use
al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA)
Also, why are you trying to draw a fully transparent bitmap anyway? What's the point?