private static void drawScanLine(int dest[], int destOff, int loops, int startX, int endX) {
		int color;
		if (Rasterizer.edgeRestricted) {
			if (endX > Graphics2D.endX) {
				endX = Graphics2D.endX;
			}
			if (startX < 0) {
				startX = 0;
			}
		}
		if (startX >= endX) {
			return;
		}
		destOff += startX;
		color = endX - startX >> 2;
		if (Rasterizer.alpha == 0) {
			while (--color >= 0) {
				dest[destOff++] = loops;
				dest[destOff++] = loops;
				dest[destOff++] = loops;
				dest[destOff++] = loops;
			}
			for (color = endX - startX & 3; --color >= 0;) {
				dest[destOff++] = loops;
			}
			return;
		}
		int j1 = Rasterizer.alpha;
		int k1 = 256 - Rasterizer.alpha;
		loops = ((loops & 0xff00ff) * k1 >> 8 & 0xff00ff) + ((loops & 0xff00) * k1 >> 8 & 0xff00);
		while (--color >= 0) {
			dest[destOff++] = loops + ((dest[destOff] & 0xff00ff) * j1 >> 8 & 0xff00ff) + ((dest[destOff] & 0xff00) * j1 >> 8 & 0xff00);
			dest[destOff++] = loops + ((dest[destOff] & 0xff00ff) * j1 >> 8 & 0xff00ff) + ((dest[destOff] & 0xff00) * j1 >> 8 & 0xff00);
			dest[destOff++] = loops + ((dest[destOff] & 0xff00ff) * j1 >> 8 & 0xff00ff) + ((dest[destOff] & 0xff00) * j1 >> 8 & 0xff00);
			dest[destOff++] = loops + ((dest[destOff] & 0xff00ff) * j1 >> 8 & 0xff00ff) + ((dest[destOff] & 0xff00) * j1 >> 8 & 0xff00);
		}
		for (color = endX - startX & 3; --color >= 0;) {
			dest[destOff++] = loops + ((dest[destOff] & 0xff00ff) * j1 >> 8 & 0xff00ff) + ((dest[destOff] & 0xff00) * j1 >> 8 & 0xff00);
		}
	}