Stop using `glBlitFramebuffer()` for scaling tasks.
The driver is allowed to read outside of the source rect, and this can cause incorrect results. This patch makes `preserve-3d.png` test have some minor rounding differences in its colors from the previous implementation, so I regenerated the reference image. Closes #3088.