:? [pascal]//------------------------------------------------------------------------------
// ColourTo16BitRGB
//
// Convert a standard TColor to it's 16 bit RGB value
//
// BY Codetapper and Czar
//------------------------------------------------------------------------------
function ColourTo16BitRGB(InitialCol: TColor): Cardinal;
var aRed, aGreen, aBlue, sRed, sGreen, sBlue: integer;
begin
sRed := InitialCol and $ff;
sGreen := (InitialCol shr and $ff;
sBlue := (InitialCol shr 16) and $ff;

aRed := (32 * sRed) div 256;
aGreen := (64 * sGreen) div 256;
aBlue := (32 * sBlue) div 256;

Result := (aRed shl 11) + (aGreen shl 5) + (aBlue shl 0);
end;[/pascal]

I figured I would post this reply here. We too had problems with the 16 bit colour depth. In order to be able to draw on the surface we decided it was easier to convert TColor to 16bit colour using the code above.