Index: src/java/org/apache/fop/render/awt/AWTRenderer.java =================================================================== --- src/java/org/apache/fop/render/awt/AWTRenderer.java (revision 795220) +++ src/java/org/apache/fop/render/awt/AWTRenderer.java (working copy) @@ -30,6 +30,7 @@ import java.awt.Color; import java.awt.Dimension; import java.awt.geom.Rectangle2D; +import java.awt.geom.Point2D; import java.awt.print.PageFormat; import java.awt.print.Pageable; import java.awt.print.Paper; @@ -46,6 +47,7 @@ import org.apache.fop.render.awt.viewer.Renderable; import org.apache.fop.render.awt.viewer.StatusListener; import org.apache.fop.render.java2d.Java2DRenderer; +import org.apache.fop.render.extensions.prepress.PageScaleAttributes; /** * The AWTRender outputs the pages generated by the layout engine to a Swing @@ -149,11 +151,23 @@ Rectangle2D bounds = getPageViewport(pageNum).getViewArea(); pageWidth = (int) Math.round(bounds.getWidth() / 1000f); pageHeight = (int) Math.round(bounds.getHeight() / 1000f); - double scale = scaleFactor + double scaleX = scaleFactor * (25.4 / FopFactoryConfigurator.DEFAULT_TARGET_RESOLUTION) / userAgent.getTargetPixelUnitToMillimeter(); - int bitmapWidth = (int) ((pageWidth * scale) + 0.5); - int bitmapHeight = (int) ((pageHeight * scale) + 0.5); + double scaleY = scaleFactor + * (25.4 / FopFactoryConfigurator.DEFAULT_TARGET_RESOLUTION) + / userAgent.getTargetPixelUnitToMillimeter(); + if (getPageViewport(pageNum).getForeignAttributes() != null) { + String scale = (String) getPageViewport(pageNum).getForeignAttributes().get( + PageScaleAttributes.EXT_PAGE_SCALE); + Point2D scales = PageScaleAttributes.getScaleAttributes(scale); + if (scales != null) { + scaleX *= scales.getX(); + scaleY *= scales.getY(); + } + } + int bitmapWidth = (int) ((pageWidth * scaleX) + 0.5); + int bitmapHeight = (int) ((pageHeight * scaleY) + 0.5); return new Dimension(bitmapWidth, bitmapHeight); }