A method for rendering a surface, comprising: in advance of a first user input to view an image rendered to the surface: a) pre-computing a region (910, 950) on the surface defined by a first transformation from a viewport to the surface; and b) pre-computing a second transformation that maps from the pre-computed region (910, 950) to the viewport; in response to the first user input to view the image rendered to the surface from a point of view: c) determining, according to the user input, a portion of the image, the portion intersecting with the pre-computed region (910, 950); d) applying the second transformation to the portion of the image which intersects with the pre-computed region (910, 950) to obtain a transformed image; e) rendering the transformed image in the viewport for display; and in response to a second user input to change the point of view: f) translating the image on the surface; g) determining a second portion of the image translated in f) that intersects with the region (910, 950) pre-computed in a); and h) applying the second transformation computed in b) to the second portion of the image determined in g), resulting in a second transformed image, which is rendered in the viewport for display. in advance of a first user input to view an image rendered to the surface: a) pre-computing a region (910, 950) on the surface defined by a first transformation from a viewport to the surface; and b) pre-computing a second transformation that maps from the pre-computed region (910, 950) to the viewport; a) pre-computing a region (910, 950) on the surface defined by a first transformation from a viewport to the surface; and b) pre-computing a second transformation that maps from the pre-computed region (910, 950) to the viewport; in response to the first user input to view the image rendered to the surface from a point of view: c) determining, according to the user input, a portion of the image, the portion intersecting with the pre-computed region (910, 950); d) applying the second transformation to the portion of the image which intersects with the pre-computed region (910, 950) to obtain a transformed image; e) rendering the transformed image in the viewport for display; and c) determining, according to the user input, a portion of the image, the portion intersecting with the pre-computed region (910, 950); d) applying the second transformation to the portion of the image which intersects with the pre-computed region (910, 950) to obtain a transformed image; e) rendering the transformed image in the viewport for display; and in response to a second user input to change the point of view: f) translating the image on the surface; g) determining a second portion of the image translated in f) that intersects with the region (910, 950) pre-computed in a); and h) applying the second transformation computed in b) to the second portion of the image determined in g), resulting in a second transformed image, which is rendered in the viewport for display. f) translating the image on the surface; g) determining a second portion of the image translated in f) that intersects with the region (910, 950) pre-computed in a); and h) applying the second transformation computed in b) to the second portion of the image determined in g), resulting in a second transformed image, which is rendered in the viewport for display.