Index: modules/awt/src/main/java/common/org/apache/harmony/awt/gl/CommonGraphics2D.java =================================================================== --- modules/awt/src/main/java/common/org/apache/harmony/awt/gl/CommonGraphics2D.java (revision 467333) +++ modules/awt/src/main/java/common/org/apache/harmony/awt/gl/CommonGraphics2D.java (working copy) @@ -209,10 +209,19 @@ MultiRectArea mra = null; if (s instanceof MultiRectArea) { mra = new MultiRectArea((MultiRectArea)s); - mra.translate(Math.round((float)transform.getTranslateX()), Math.round((float)transform.getTranslateY())); + mra.translate((int)transform.getTranslateX(), (int)transform.getTranslateY()); } else { - s = transform.createTransformedShape(s); - mra = jsr.rasterize(s, 0.5); + int type = transform.getType(); + if(s instanceof Rectangle && (type & (AffineTransform.TYPE_IDENTITY | + AffineTransform.TYPE_TRANSLATION)) != 0){ + mra = new MultiRectArea((Rectangle)s); + if(type == AffineTransform.TYPE_TRANSLATION){ + mra.translate((int)transform.getTranslateX(), (int)transform.getTranslateY()); + } + } else { + s = transform.createTransformedShape(s); + mra = jsr.rasterize(s, 0.5); + } } if (clip == null) { @@ -952,8 +961,18 @@ nclip.translate(Math.round((float)transform.getTranslateX()), Math.round((float)transform.getTranslateY())); setTransformedClip(nclip); } else { - s = transform.createTransformedShape(s); - setTransformedClip(jsr.rasterize(s, 0.5)); + int type = transform.getType(); + if(s instanceof Rectangle && (type & (AffineTransform.TYPE_IDENTITY | + AffineTransform.TYPE_TRANSLATION)) != 0){ + MultiRectArea nclip = new MultiRectArea((Rectangle)s); + if(type == AffineTransform.TYPE_TRANSLATION){ + nclip.translate((int)transform.getTranslateX(), (int)transform.getTranslateY()); + } + setTransformedClip(nclip); + } else { + s = transform.createTransformedShape(s); + setTransformedClip(jsr.rasterize(s, 0.5)); + } } }