Thanks for the suggestion. Unfortunately, that function only gives me a black image. I currently just implemented a workaround where textures generated from FBOs are just cached and then reused in the next render loop so I don't need to bind/unbind any FBOs when taking a screenshot. I am still looking into why this doesn't work though.
I should add that the first of the two err.println (Info: GLReadBufferUtil.readPixels: pre-exisiting GL error 0x502 ) is actually coming from my testing.
The second comes from
line 237 of GLReadBufferUtil. No error is found at any time before from glGetError().