I think you can do that by simply changing the Viewport to match the texture dimensions before you do the render to texture, then set the viewport back to the dimensions of the View before you render to the framebuffer. There should be no significant performance loss because you will be calling glViewport() twice as often.
Your suggestion about scaling the projection matrix should also work.