// Make sure it worked.
Debug.Assert(gl.CheckFramebufferStatusEXT(gl.FRAMEBUFFER_EXT) == gl.FRAMEBUFFER_COMPLETE_EXT);
int nDrawBuffer = gl.GetIntegerv(gl.DRAW_BUFFER);
int nReadBuffer = gl.GetIntegerv(gl.READ_BUFFER);
gl.DrawBuffer(gl.COLOR_ATTACHMENT0_EXT);
gl.ReadBuffer(gl.COLOR_ATTACHMENT0_EXT);
It is most possible that your bitmap storage code is wrong. To test it, you could copy your FBO image to a texture and render it to screen.
A hint: maybe you donwload the image to the bitmap using the GL_RGBA storage type, in this case you should use GL_BRGA (as windows and opengl uses different color byte ordering).
I guess full piece of code could help, however I won’t be able to check it (I’m not using GL under java). But it could really help (if not me, surely others).
Also if you could explain better what you mean with ‘colors do not match’. Don’t you use additive colors in some way and subtractive one in other ways ?