public synchronized void zoomIn(float zoomPercent) {

		if (zoomScale >= zoomScaleMax)
			return;

		float xmin = xAxis.getMin();
		float xmax = xAxis.getMax();
		float ymin = yAxis.getMin();
		float ymax = yAxis.getMax();

		float dx = xmax - xmin;
		float num = dx / (xAxis.getMajorTic());
		if (dx / num * zoomPercent < 0.001) {
			zoomScale = zoomScaleMax;
			return;
		}
		if (oldXmin != OLD_VALUE && oldXmax != OLD_VALUE) {
			dx = oldXmax - oldXmin;
		}
		xmin *= zoomPercent;
		xmax *= zoomPercent;
		if (xmin >= xmax - TOLERANCE)
			return;

		float dy = ymax - ymin;
		num = dy / yAxis.getMajorTic();
		if (dy / num * zoomPercent < 0.001) {
			zoomScale = zoomScaleMax;
			return;
		}
		if (oldYmin != OLD_VALUE && oldYmax != OLD_VALUE) {
			dy = oldYmax - oldYmin;
		}
		ymin *= zoomPercent;
		ymax *= zoomPercent;
		if (ymin >= ymax - TOLERANCE)
			return;

		setXBounds(xmin, xmax);
		setYBounds(ymin, ymax);

		zoomScale++;
		repaint();

	}