protected void draw_markers(Graphics g, Rectangle w) {
		int x1, y1;
		int i;
		// Calculate the clipping rectangle
		Rectangle clip = g.getClipBounds();
		int xcmin = clip.x;
		int xcmax = clip.x + clip.width;
		int ycmin = clip.y;
		int ycmax = clip.y + clip.height;

		// Load the marker specified for this data
		Markers m = g2d.getMarkers();

		if (m == null)
			return;

		for (i = 0; i < length; i += stride) {
			if (inside(data[i], data[i + 1])) {

				x1 = (int) (w.x + ((data[i] - xmin) / xrange) * w.width);
				y1 = (int) (w.y + (1.0 - (data[i + 1] - ymin) / yrange) * w.height);

				if (x1 >= xcmin && x1 <= xcmax && y1 >= ycmin && y1 <= ycmax)
					m.draw(g, marker, markerscale, x1, y1);

			}
		}

	}