viewport does reasonable zoom + panning