Fix some issues with framebuffer sizing

This fixes the viewport on rendering to a larger FBO than the expected render surface.

Also brings together the DrawPixels()/DrawFramebuffer() logic and supports offset rendering better.

-[Unknown]