public void drawImage(int x, int y) {
		x += offsetX;
		y += offsetY;
		int destinationOffset = x + y * DrawingArea.width;
		int sourceOffset = 0;
		int rowCount = height;
		int columnCount = width;
		int lineDestinationOffset = DrawingArea.width - columnCount;
		int lineSourceOffset = 0;
		if (y < DrawingArea.topY) {
			int clipHeight = DrawingArea.topY - y;
			rowCount -= clipHeight;
			y = DrawingArea.topY;
			sourceOffset += clipHeight * columnCount;
			destinationOffset += clipHeight * DrawingArea.width;
		}
		if (y + rowCount > DrawingArea.bottomY)
			rowCount -= (y + rowCount) - DrawingArea.bottomY;
		if (x < DrawingArea.topX) {
			int clipWidth = DrawingArea.topX - x;
			columnCount -= clipWidth;
			x = DrawingArea.topX;
			sourceOffset += clipWidth;
			destinationOffset += clipWidth;
			lineSourceOffset += clipWidth;
			lineDestinationOffset += clipWidth;
		}
		if (x + columnCount > DrawingArea.bottomX) {
			int clipWidth = (x + columnCount) - DrawingArea.bottomX;
			columnCount -= clipWidth;
			lineSourceOffset += clipWidth;
			lineDestinationOffset += clipWidth;
		}
		if (!(columnCount <= 0 || rowCount <= 0)) {
			blockCopyTransparent(DrawingArea.pixels, pixels, sourceOffset,
					destinationOffset, columnCount, rowCount,
					lineDestinationOffset, lineSourceOffset);
		}
	}