This problem may be because you are running in 16 bit mode.
When you draw a dot, the 32 bits have to be reduced to 16 bits. This is usually done by dropping the lower 3 bit of red and blue, and the lower 2 of green (or on older cards, the lower 3 bits of each colour). Those bits are just lost.
When you read the pixel with the point function, it converts the colours back to 32 bits - 8 bits each for red, green and blue - and fills in the lower bits with some extra bits that calculated.
Because of these two conversions, the colour you feed in may not be the colour that you get back.
*** Coming soon - Network Plug-in - Check my site for info ***
For free Plug-ins, source and the Interface library for Visual C++ 6, .NET and now for Dev-C++
http://www.matrix1.demon.co.uk