Give me some time to run a couple of tests against pure win api. My focused was on porting the component instead of testing the 32bit support so I might have overlooked something. But as a first impression I would say either a bug or a case of "cross platform uniformity".
Arrrr. I think I found the problem. I'm wrong (again) 32bit drawing _is_ working, but GDI functions set the alpha to 0.
Drawing a 32bit TBitmap always uses the alpha channel, which means the GDI drawings are 100% transparent, which explains the gray (TForm) color.
Solutions Ive seen involve manually setting the alpha values of the rawimage, which means you loose the alpha of a transparent PNG.
I dont know how Delphi solved this one. Maybe they dont treat 32bit TBitmaps as always being transparent?
** EDIT **
Btw: Delphi doesn't clear a TBitmap to black when you change PixelFormat, and when loading a JPEG, you get a 24bit image. Not a 32bit.
I guess, I would always draw a JPEG into a 24bit image, and "flattern" 32bit PNG to 24bit.
I dont recall 32bit TBitmap editing in Delphi being overly flexable, so, I guess the TBGRABitmap advice still is good.