diff -r eee373287ad8 modules/graphics/src/main/java/com/sun/scenario/effect/Blend.java
--- a/modules/graphics/src/main/java/com/sun/scenario/effect/Blend.java	Mon Mar 24 11:45:37 2014 +0100
+++ b/modules/graphics/src/main/java/com/sun/scenario/effect/Blend.java	Mon Mar 24 13:36:50 2014 +0100
@@ -29,6 +29,7 @@
 import com.sun.javafx.geom.Rectangle;
 import com.sun.javafx.geom.transform.BaseTransform;
 import com.sun.scenario.effect.impl.state.RenderState;
+import javafx.scene.effect.BlendMode;
 
 /**
  * An effect that blends the two inputs together using one of the
@@ -402,7 +403,49 @@
          *      <em>B<sub>r</sub></em> = <em>B<sub>top</sub></em>
          * </pre>
          */
-        BLUE,
+        BLUE,;
+
+        public static Mode toPGMode(BlendMode mode) {
+            if (mode == null) {
+                return SRC_OVER; // Default value
+            } else if (mode == BlendMode.SRC_OVER) {
+                return SRC_OVER;
+            } else if (mode == BlendMode.SRC_ATOP) {
+                return SRC_ATOP;
+            } else if (mode == BlendMode.ADD) {
+                return ADD;
+            } else if (mode == BlendMode.MULTIPLY) {
+                return MULTIPLY;
+            } else if (mode == BlendMode.SCREEN) {
+                return SCREEN;
+            } else if (mode == BlendMode.OVERLAY) {
+                return OVERLAY;
+            } else if (mode == BlendMode.DARKEN) {
+                return DARKEN;
+            } else if (mode == BlendMode.LIGHTEN) {
+                return LIGHTEN;
+            } else if (mode == BlendMode.COLOR_DODGE) {
+                return COLOR_DODGE;
+            } else if (mode == BlendMode.COLOR_BURN) {
+                return COLOR_BURN;
+            } else if (mode == BlendMode.HARD_LIGHT) {
+                return HARD_LIGHT;
+            } else if (mode == BlendMode.SOFT_LIGHT) {
+                return SOFT_LIGHT;
+            } else if (mode == BlendMode.DIFFERENCE) {
+                return DIFFERENCE;
+            } else if (mode == BlendMode.EXCLUSION) {
+                return EXCLUSION;
+            } else if (mode == BlendMode.RED) {
+                return RED;
+            } else if (mode == BlendMode.GREEN) {
+                return GREEN;
+            } else if (mode == BlendMode.BLUE) {
+                return BLUE;
+            } else {
+                throw new AssertionError("Unrecognized blend mode: {mode}");
+            }
+        }
     }
 
     private Mode mode;
diff -r eee373287ad8 modules/graphics/src/main/java/javafx/scene/canvas/GraphicsContext.java
--- a/modules/graphics/src/main/java/javafx/scene/canvas/GraphicsContext.java	Mon Mar 24 11:45:37 2014 +0100
+++ b/modules/graphics/src/main/java/javafx/scene/canvas/GraphicsContext.java	Mon Mar 24 13:36:50 2014 +0100
@@ -237,7 +237,7 @@
         return theCanvas.getBuffer();
     }
 
-    private static float coords[] = new float[6];
+    private float coords[] = new float[6];
     private static final byte pgtype[] = {
         NGCanvas.MOVETO,
         NGCanvas.LINETO,
@@ -585,7 +585,6 @@
         txdirty = true;
     }
 
-    private static Affine2D scratchTX = new Affine2D();
     /**
      * Concatenates the input with the current transform.
      * 
@@ -600,10 +599,7 @@
                           double mxy, double myy,
                           double mxt, double myt)
     {
-        scratchTX.setTransform(mxx, myx,
-                               mxy, myy,
-                               mxt, myt);
-        curState.transform.concatenate(scratchTX);
+        curState.transform.concatenate(mxx, mxy, mxt, myx, myy, myt);
         txdirty = true;
     }
     
@@ -616,10 +612,9 @@
      */
     public void transform(Affine xform) {
         if (xform == null) return;
-        scratchTX.setTransform(xform.getMxx(), xform.getMyx(),
-                               xform.getMxy(), xform.getMyy(),
-                               xform.getTx(), xform.getTy());
-        curState.transform.concatenate(scratchTX);
+        curState.transform.concatenate(xform.getMxx(), xform.getMxy(),
+                xform.getTx(), xform.getMyx(),
+                xform.getMyy(), xform.getTy());
         txdirty = true;
     }
 
@@ -720,7 +715,6 @@
         return curState.globalAlpha;
     }
     
-    private static Blend TMP_BLEND = new Blend(BlendMode.SRC_OVER); 
     /**
      * Sets the global blend mode.
      * A {@code null} value will be ignored and the current value will remain unchanged.
@@ -730,11 +724,9 @@
     public void setGlobalBlendMode(BlendMode op) {
         if (op != null && op != curState.blendop) {
             GrowableDataBuffer buf = getBuffer();           
-            curState.blendop = op; 
-            TMP_BLEND.setMode(op);
-            TMP_BLEND.impl_sync();
+            curState.blendop = op;
             buf.putByte(NGCanvas.COMP_MODE);
-            buf.putObject(((com.sun.scenario.effect.Blend)TMP_BLEND.impl_getImpl()).getMode());
+            buf.putObject(com.sun.scenario.effect.Blend.Mode.toPGMode(op));
         }
     }
     
@@ -1341,7 +1333,6 @@
         return true;
     }
 
-    private static final Arc2D TEMP_ARC = new Arc2D();
     /**
      * Adds path elements to the current path to make an arc that uses Euclidean
      * degrees. This Euclidean orientation sweeps from East to North, then West,
@@ -1358,14 +1349,15 @@
                     double radiusX, double radiusY,
                     double startAngle, double length)
     {
-        TEMP_ARC.setArc((float)(centerX - radiusX), // x
-                        (float)(centerY - radiusY), // y
-                        (float)(radiusX * 2.0), // w
-                        (float)(radiusY * 2.0), // h
-                        (float)startAngle,
-                        (float)length,
-                        Arc2D.OPEN);
-        path.append(TEMP_ARC.getPathIterator(curState.transform), true);
+        Arc2D tempArc = new Arc2D();
+        tempArc.setArc((float) (centerX - radiusX), // x
+                (float) (centerY - radiusY), // y
+                (float) (radiusX * 2.0), // w
+                (float) (radiusY * 2.0), // h
+                (float) startAngle,
+                (float) length,
+                Arc2D.OPEN);
+        path.append(tempArc.getPathIterator(curState.transform), true);
         markPathDirty();
     }
 
diff -r eee373287ad8 modules/graphics/src/main/java/javafx/scene/effect/Blend.java
--- a/modules/graphics/src/main/java/javafx/scene/effect/Blend.java	Mon Mar 24 11:45:37 2014 +0100
+++ b/modules/graphics/src/main/java/javafx/scene/effect/Blend.java	Mon Mar 24 13:36:50 2014 +0100
@@ -84,48 +84,6 @@
  */
 public class Blend extends Effect {
 
-    static private Mode toPGMode(BlendMode mode) {
-        if (mode == null) {
-            return Mode.SRC_OVER; // Default value
-        } else if (mode == BlendMode.SRC_OVER) {
-            return Mode.SRC_OVER;
-        } else if (mode == BlendMode.SRC_ATOP) {
-            return Mode.SRC_ATOP;
-        } else if (mode == BlendMode.ADD) {
-            return Mode.ADD;
-        } else if (mode == BlendMode.MULTIPLY) {
-            return Mode.MULTIPLY;
-        } else if (mode == BlendMode.SCREEN) {
-            return Mode.SCREEN;
-        } else if (mode == BlendMode.OVERLAY) {
-            return Mode.OVERLAY;
-        } else if (mode == BlendMode.DARKEN) {
-            return Mode.DARKEN;
-        } else if (mode == BlendMode.LIGHTEN) {
-            return Mode.LIGHTEN;
-        } else if (mode == BlendMode.COLOR_DODGE) {
-            return Mode.COLOR_DODGE;
-        } else if (mode == BlendMode.COLOR_BURN) {
-            return Mode.COLOR_BURN;
-        } else if (mode == BlendMode.HARD_LIGHT) {
-            return Mode.HARD_LIGHT;
-        } else if (mode == BlendMode.SOFT_LIGHT) {
-            return Mode.SOFT_LIGHT;
-        } else if (mode == BlendMode.DIFFERENCE) {
-            return Mode.DIFFERENCE;
-        } else if (mode == BlendMode.EXCLUSION) {
-            return Mode.EXCLUSION;
-        } else if (mode == BlendMode.RED) {
-            return Mode.RED;
-        } else if (mode == BlendMode.GREEN) {
-            return Mode.GREEN;
-        } else if (mode == BlendMode.BLUE) {
-            return Mode.BLUE;
-        } else {
-            throw new java.lang.AssertionError("Unrecognized blend mode: {mode}");
-        }
-    }
-
     /**
      * Used by Group to convert the FX BlendMode enum value into a Decora value.
      * @treatAsPrivate implementation detail
@@ -133,7 +91,7 @@
      */
     @Deprecated
     public static Mode impl_getToolkitMode(BlendMode mode) {
-        return toPGMode(mode);
+        return Mode.toPGMode(mode);
     }
 
     /**
@@ -167,7 +125,7 @@
     @Override
     com.sun.scenario.effect.Blend impl_createImpl() {
         return new com.sun.scenario.effect.Blend(
-                        toPGMode(BlendMode.SRC_OVER),
+                        Mode.toPGMode(BlendMode.SRC_OVER),
                         com.sun.scenario.effect.Effect.DefaultInput,
                         com.sun.scenario.effect.Effect.DefaultInput);
     }
@@ -342,7 +300,7 @@
         peer.setTopInput(localTopInput == null ? null : localTopInput.impl_getImpl());
         peer.setBottomInput(localBottomInput == null ? null : localBottomInput.impl_getImpl());
         peer.setOpacity((float)Utils.clamp(0, getOpacity(), 1));
-        peer.setMode(toPGMode(getMode()));
+        peer.setMode(Mode.toPGMode(getMode()));
     }
 
     /**
