public void copy(int sx, int sy, int sw, int sh, int dx, int dy, int dw, int dh) { if ((sw != dw) || (sh != dh)) { // use slow version if changing size copy(this, sx, sy, sw, sh, dx, dy, dw, dh); } else { dx = dx - sx; // java2d's "dx" is the delta, not dest dy = dy - sy; g2.copyArea(sx, sy, sw, sh, dx, dy); } }