1. A method for rendering a surface, comprising: in advance of a user input to view an image rendered to the surface: (a) pre-computing a region on the surface defined by a first transformation from a viewport to the surface; (b) pre-computing a second transformation that maps from the region to the viewport; in response to the user input to view the image rendered to the surface: (c) determining, according to the user input, a portion of an image, the portion intersecting with the region; (d) applying the second transformation to the portion of the image which intersects with the region to obtain a transformed image; and (e) rendering the transformed image in the viewport for display, wherein each of the steps (a)-(e) are executed on at least one computing device.