Distortion using glRead/DrawPixels?

The section of code I’m having trouble with saves the frame buffer out to java memory from glreadPixles in the form of a ByteBuffer using the GL_LUMINANCE format setting, then re-colors each pixel by altering the color values, and then uses glDrawPixels to write back into the frame buffer. This method works fine (if slowly) on a GeForce 6600 GS, as the first attached image shows.
But when I run it on an older laptop with a Radeon 9200, I get strange distortion (see the second image) that seems to change some of the rendered image with the background color. Oddly, this distortion is not present the first time the image is rendered - it looks correct for a second or two, and then pops into the distorted image. Particularly strange to me is that the text is completely gone - what would cause such uneven distortion? Could there some sort of interaction between the OpenGL types used for the glDraw/ReadPixel commands (I use GL_BYTE for all of them) and Java ByteBuffers?

No one’s seen this before? I thought I remembered seeing a forum post about it a while back, but I couldn’t find it in a search…