Index: src/java/org/apache/fop/render/java2d/Java2DGraphicsPainter.java
===================================================================
--- src/java/org/apache/fop/render/java2d/Java2DGraphicsPainter.java	(revision 1715370)
+++ src/java/org/apache/fop/render/java2d/Java2DGraphicsPainter.java	(working copy)
@@ -32,11 +32,13 @@
 import org.apache.commons.logging.LogFactory;
 
 import org.apache.fop.fo.Constants;
+import org.apache.fop.render.intermediate.ArcToBezierCurveTransformer;
+import org.apache.fop.render.intermediate.BezierCurvePainter;
 import org.apache.fop.render.intermediate.GraphicsPainter;
 import org.apache.fop.traits.RuleStyle;
 import org.apache.fop.util.ColorUtil;
 
-class Java2DGraphicsPainter implements GraphicsPainter {
+public class Java2DGraphicsPainter implements GraphicsPainter, BezierCurvePainter {
 
     /** logging instance */
     static final Log log = LogFactory.getLog(Java2DGraphicsPainter.class);
@@ -44,11 +46,14 @@
 
     private GeneralPath currentPath;
 
+    private final ArcToBezierCurveTransformer arcToBezierCurveTransformer;
+
     private final Java2DPainter painter;
 
 
     Java2DGraphicsPainter(Java2DPainter painter) {
         this.painter = painter;
+        this.arcToBezierCurveTransformer = new ArcToBezierCurveTransformer(this);
     }
 
     private Java2DGraphicsState getG2DState() {
@@ -291,20 +296,22 @@
     /** {@inheritDoc} */
     public void arcTo(double startAngle, double endAngle, int cx, int cy,
             int width, int height) throws IOException {
+        arcToBezierCurveTransformer.arcTo(startAngle, endAngle, cx, cy, width, height);
     }
 
     /** {@inheritDoc} */
     public void rotateCoordinates(double angle) throws IOException {
+        painter.g2dState.getGraph().rotate(angle);
     }
 
     /** {@inheritDoc} */
-    public void translateCoordinates(int xTranslate, int yTranslate)
-            throws IOException {
+    public void translateCoordinates(int xTranslate, int yTranslate) throws IOException {
+        painter.g2dState.getGraph().translate(xTranslate, yTranslate);
     }
 
     /** {@inheritDoc} */
-    public void scaleCoordinates(float xScale, float yScale)
-            throws IOException {
+    public void scaleCoordinates(float xScale, float yScale) throws IOException {
+        painter.g2dState.getGraph().scale(xScale, yScale);
     }
 
     /** {@inheritDoc} */
@@ -331,4 +338,12 @@
         this.painter.restoreGraphicsState();
         this.currentPath = null;
     }
+
+    /** {@inheritDoc} */
+    public void cubicBezierTo(int p1x, int p1y, int p2x, int p2y, int p3x, int p3y) {
+        if (currentPath == null) {
+            currentPath = new GeneralPath();
+        }
+        currentPath.curveTo(p1x, p1y, p2x, p2y, p3x, p3y);
+    }
 }
Index: src/java/org/apache/fop/render/java2d/Java2DPainter.java
===================================================================
--- src/java/org/apache/fop/render/java2d/Java2DPainter.java	(revision 1715370)
+++ src/java/org/apache/fop/render/java2d/Java2DPainter.java	(working copy)
@@ -182,8 +182,11 @@
     /** {@inheritDoc} */
     public void clipBackground(Rectangle rect, BorderProps bpsBefore, BorderProps bpsAfter,
             BorderProps bpsStart, BorderProps bpsEnd) throws IFException {
-        // TODO Auto-generated method stub
-
+        try {
+            borderPainter.clipBackground(rect, bpsBefore, bpsAfter, bpsStart, bpsEnd);
+        } catch (IOException ioe) {
+            throw new IFException("I/O error while clipping background", ioe);
+        }
     }
 
     /** {@inheritDoc} */
@@ -197,6 +200,13 @@
         }
     }
 
+    public void drawBorderRect(Rectangle rect, BorderProps top, BorderProps bottom,
+            BorderProps left, BorderProps right, Color innerBackgroundColor) throws IFException {
+        if (top != null || bottom != null || left != null || right != null) {
+            this.borderPainter.drawBorders(rect, top, bottom, left, right, null);
+        }
+    }
+
     /** {@inheritDoc} */
     public void drawBorderRect(Rectangle rect, BorderProps top, BorderProps bottom,
             BorderProps left, BorderProps right) throws IFException {
