public void drawMemBltOrder(MemBltOrder memblt) {
		int x = memblt.getX();
		int y = memblt.getY();

		if (x > this.right || y > this.bottom)
			return; // off screen

		int cx = memblt.getCX();
		int cy = memblt.getCY();
		int srcx = memblt.getSrcX();
		int srcy = memblt.getSrcY();

		// Perform standard clipping checks, x-axis
		int clipright = x + cx - 1;
		if (clipright > this.right)
			clipright = this.right;
		if (x < this.left)
			x = this.left;
		cx = clipright - x + 1;

		// Perform standard clipping checks, y-axis
		int clipbottom = y + cy - 1;
		if (clipbottom > this.bottom)
			clipbottom = this.bottom;
		if (y < this.top)
			y = this.top;
		cy = clipbottom - y + 1;

		srcx += x - memblt.getX();
		srcy += y - memblt.getY();

		// if (logger.isInfoEnabled())
		System.out.println("MEMBLT x=" + x + " y=" + y + " cx=" + cx + " cy="
				+ cy + " srcx=" + srcx + " srcy=" + srcy + " opcode="
				+ memblt.getOpcode());
		try {
			Bitmap bitmap = cache.getBitmap(memblt.getCacheID(), memblt
					.getCacheIDX());
			// IndexColorModel cm = cache.get_colourmap(memblt.getColorTable());
			// should use the colormap, but requires high color backstore...
			rop.do_array(memblt.getOpcode(), backstore, this.width, x, y, cx,
					cy, bitmap.getBitmapData(), bitmap.getWidth(), srcx, srcy);

			this.repaint(x, y, cx, cy);
		} catch (RdesktopException e) {
		}
	}