public void zoomOut(Point pivot) {
        if (getZoom() <= 1)
            return;
        Dimension oldValue = new Dimension(mapSize.width, mapSize.height);
        int dx = pivot.x;
        int dy = pivot.y;
        Point mapPosition = getMapPosition();
        setZoom(getZoom() - 1);
        updateMapPositionWithoutFire((mapPosition.x - dx) / 2, 
        							(mapPosition.y - dy) / 2); //zooms out so that the cursor stays were it was (points to the same location)
        firePropertyChange(Global.ZOOM_OUT_EVENT, oldValue, mapSize);
        repaint();
    }