Implement Surface::transform method