	private Point fixupDisplayBounds(Point tipSize, Point location) {
		if (respectDisplayBounds || respectMonitorBounds) {
			Rectangle bounds;
			Point rightBounds = new Point(tipSize.x + location.x, tipSize.y
					+ location.y);
			Monitor[] ms = control.getDisplay().getMonitors();
			if (respectMonitorBounds && ms.length > 1) {
				bounds = control.getMonitor().getBounds();
				Point p = new Point(location.x, location.y);
				Rectangle tmp;
				for (int i = 0; i < ms.length; i++) {
					tmp = ms[i].getBounds();
					if (tmp.contains(p)) {
						bounds = tmp;
						break;
					}
				}
			} else {
				bounds = control.getDisplay().getBounds();
			}
			if (!(bounds.contains(location) && bounds.contains(rightBounds))) {
				if (rightBounds.x > bounds.width) {
					location.x -= rightBounds.x - bounds.width;
				}
				if (rightBounds.y > bounds.height) {
					location.y -= rightBounds.y - bounds.height;
				}
				if (location.x < bounds.x) {
					location.x = bounds.x;
				}
				if (location.y < bounds.y) {
					location.y = bounds.y;
				}
			}
		}
		return location;
	}

	private Point fixupDisplayBounds(Point tipSize, Point location) {
		if (respectDisplayBounds || respectMonitorBounds) {
			Rectangle bounds;
			Point rightBounds = new Point(tipSize.x + location.x, tipSize.y
					+ location.y);
			Monitor[] ms = control.getDisplay().getMonitors();
			if (respectMonitorBounds && ms.length > 1) {
				bounds = control.getMonitor().getBounds();
				Point p = new Point(location.x, location.y);
				Rectangle tmp;
				for (int i = 0; i < ms.length; i++) {
					tmp = ms[i].getBounds();
					if (tmp.contains(p)) {
						bounds = tmp;
						break;
					}
				}
			} else {
				bounds = control.getDisplay().getBounds();
			}
			if (!(bounds.contains(location) && bounds.contains(rightBounds))) {
				if (rightBounds.x > bounds.x + bounds.width) {
					location.x -= rightBounds.x - (bounds.x + bounds.width);
				}
				if (rightBounds.y > bounds.y + bounds.height) {
					location.y -= rightBounds.y - (bounds.y + bounds.height);
				}
				if (location.x < bounds.x) {
					location.x = bounds.x;
				}
				if (location.y < bounds.y) {
					location.y = bounds.y;
				}
			}
		}
		return location;
	}
