refactor zooming
refactor middle mouse zoom reset