I have noticed that with TBitmap, it will always report a PixelFormat of either pf24bit or pf32bit, despite what is actually in the bitmap. For example, on the project I am currently working on, it uses entirely 8 bit colour depth, and PixelFormat still tells me it is 24 bit. I have to resort to getting the actual bit depth from the bitmap header itself (which correctly says 8 ).
I also have to resort to building bitmaps at low level to ensure I get 8 bit colour depth.