This worked great in RenderMonkey with the deferred-renderer example, but when I put it into my deferred-renderer game engine, I also got the "screen split into four parts" issue. The problem turned out to be that my engine (Torque3D) uses a prepass buffer composed of normals in the RGB and depth in the alpha channel. I used this [url="http://mynameismjp.wordpress.com/2009/03/10/reconstructing-position-from-depth/"]article[/url] to reconstruct the view-space position buffer from the depth buffer. The problem was that I was placing the newly calculated position information into an 8-bit render target. Changing it to a 16-bit buffer fixed the issue (of course the positions need to be floating point!).