Support render-to-offset within a framebuffer

Fixes #6324.

I don't actually understand why subtracting the offset in setOrtho works for the preview...

-[Unknown]
Should *4 be *2 if the framebuffer format is 16-bit?