def METHOD_NAME(self):
    """
    Save and restore projection and activate Surface buffer to draw on.
    Also resets the limit of the surface (viewport).
    """
    # Set viewport and projection
    proj = self.ctx.projection_2d
    self.limit(0, 0, *self.size)
    # Set blend function
    blend_func = self.ctx.blend_func
    self.ctx.blend_func = self.blend_func_render_into
    with self.fbo.METHOD_NAME():
        yield self
    # Restore projection and blend function
    self.ctx.projection_2d = proj
    self.ctx.blend_func = blend_func