Here's a portion of the 'GETPIXEL()' help file entry:
Warning: The color returned can differ up to 13% from the actual value for the pixel. 16 bit colored pixels are especially likely to return incorrect information. The reason for this is that some platforms have 16 bit displays - 24 bits of color information is converted down to 16 bits resulting in a loss of accuracy.
It appears as if only 24 bit colour would result in an accurate GETPIXEL() command.
Otherwise, the colour is stored as 24 bit, but down-sized to 16 bit for display.
GETPIXEL() will read this 16 bit colour and convert it back to 24 bit for storing in GLBasic memory.
Perhaps only using "16 bit safe" colours may help, if such a concept makes sense.
ie. what values when converted from 24 to 16 bit, then back again to 24 bit results in the original value.
It would depend on how the colours are converted I guess.