This seems simple enough, but here goes:

I am reading glReadPixels correctly, but when I try to write to the screen, i only am able to write one color, which is what ever color is in the bottom right hand corner. I specified to opengl that i want to read a section at the lower corner, and i can see by outputting the data that its reading correctly.

But i don't change the value of the pixels.

When I call glDrawPixels, its doesn't copy the array properly, it just uses one value and copies that value across the width and height.

I have these two flags set:
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);

I'm not sure if i'm missing anything else.

Thanks for the help.