Ok. If you do :
SpeedButton1.Canvas.Draw(1, 1, bmp.Bitmap);
it use the bitmap property, it uses standard drawing functions, so there is no alpha blending.
So the right way should be :
bmp.Draw(SpeedButton1.Canvas, 1,1, False);
When you debug it, go step by step, what procedures are executed on this line ?