private void showCursor() { if (cursorImage != null) { if (screenBackup == null) { screenBackup = new int[cursorImage.getWidth() * cursorImage.getHeight()]; } // screenBackup = graphics.doGetPixels(cursorArea); final int cursorX = (int) cursorArea.getX(); final int cursorY = (int) cursorArea.getY(); final int maxY = Math.min(cursorY + cursorImage.getHeight(), graphics.getHeight()); final int maxX = Math.min(cursorX + cursorImage.getWidth(), graphics.getWidth()); final int width = cursorImage.getWidth(); int index = 0; for (int y = cursorY; y < maxY; y++) { int lineIndex = index; for (int x = cursorX; x < maxX; x++) { screenBackup[lineIndex] = graphics.doGetPixel(x, y); lineIndex++; } index += width; } putPixels(cursorImage.getImage(), screenBackup); } }