code: public void setCurrentScale(final double newScale, final ZoomOption option, final Coordinate rescalePoint) {
  		saveState();
  		// calculate theoretical new bounds
  		Bbox newBbox = new Bbox(0, 0, getWidth() / newScale, getHeight() / newScale);
  
  		double factor = newScale / getCurrentScale();
  
  		// Calculate translate vector to assure rescalePoint is on the same
  		// position as before.
  		double dX = (rescalePoint.getX() - viewState.getX()) * (1 - 1 / factor);
  		double dY = (rescalePoint.getY() - viewState.getY()) * (1 - 1 / factor);
  
  		newBbox.setCenterPoint(new Coordinate(viewState.getX(), viewState.getY()));
  		newBbox.translate(dX, dY);
  		// and apply...
  		doApplyBounds(newBbox, option);
  	}
docs: Apply a new scale level on the map. In case the are fixed resolutions defined on this MapView, it will
  automatically snap to the nearest resolution. In case the maximum extents are exceeded, it will pan to avoid
  this.
  
  @param newScale
  The preferred new scale.
  @param option
  zoom option, {@link org.geomajas.gwt.client.map.MapView.ZoomOption}
  @param rescalePoint
  After zooming, this point will still be on the same position in the view as before.