Index: modules/awt/src/main/java/unix/org/apache/harmony/awt/gl/linux/XSurface.java =================================================================== --- modules/awt/src/main/java/unix/org/apache/harmony/awt/gl/linux/XSurface.java (revision 593083) +++ modules/awt/src/main/java/unix/org/apache/harmony/awt/gl/linux/XSurface.java (working copy) @@ -62,24 +62,7 @@ } void setRoi(Rectangle2D roi) { - if (roi.getX() < 0 || roi.getY() < 0) { - double x = roi.getX(); - double y = roi.getY(); - double width = roi.getWidth(); - double height = (int) roi.getHeight(); - if (x < 0) { - width += x; - x = 0; - } - if (y < 0) { - height += y; - y = 0; - } - - this.roi = new Rectangle2D.Double(x, y, width, height); - } else { - this.roi = roi; - } + this.roi = roi; } public ColorModel getColorModel() { Index: modules/awt/src/main/java/unix/org/apache/harmony/awt/gl/linux/XBlitter.java =================================================================== --- modules/awt/src/main/java/unix/org/apache/harmony/awt/gl/linux/XBlitter.java (revision 593083) +++ modules/awt/src/main/java/unix/org/apache/harmony/awt/gl/linux/XBlitter.java (working copy) @@ -343,6 +343,19 @@ Color bgcolor, MultiRectArea clip ) { + + if(dstX < 0){ + width += dstX; + dstX = 0; + } + + if(dstY < 0){ + height += dstY; + dstY = 0; + } + + if(width <= 0 || height <= 0) return; + XSurface xDstSurf = ((XSurface) dstSurf); boolean srcNoAlpha =