diff --git a/Graphics/DrawingCombinators.hs b/Graphics/DrawingCombinators.hs
--- a/Graphics/DrawingCombinators.hs
+++ b/Graphics/DrawingCombinators.hs
@@ -264,7 +264,7 @@
 (%%) :: Affine -> Image a -> Image a
 tr' %% d = Image render' pick
     where
-    render' tr col = dRender d (tr `compose` tr') col
+    render' tr col = (dRender d $! tr `compose` tr') col
     pick tr z = dPick d (tr `compose` tr') z
 
 
@@ -391,6 +391,7 @@
 openFont path = do
     font <- FTGL.createPolygonFont path
     addFinalizer font (FTGL.destroyFont font)
+    _ <- FTGL.setFontFaceSize font 72 72 
     return $ Font font
 
 -- | The image representing some text rendered with a font.  The baseline
@@ -401,14 +402,11 @@
     GL.preservingMatrix $ do
         multGLmatrix tr
         GL.scale (1/36 :: GL.GLdouble) (1/36) 1
-        _ <- FTGL.setFontFaceSize (getFont font) 72 72 
         FTGL.renderFont (getFont font) str FTGL.All
         return ()
 
 -- | @textWidth font str@ is the width of the text in @text font str@.
 textWidth :: Font -> String -> R
-textWidth font str = (/36) . realToFrac . unsafePerformIO $ do
-    _ <- FTGL.setFontFaceSize (getFont font) 72 72 
-    FTGL.getFontAdvance (getFont font) str
+textWidth font str = (/36) . realToFrac . unsafePerformIO $ FTGL.getFontAdvance (getFont font) str
 
 #endif
diff --git a/graphics-drawingcombinators.cabal b/graphics-drawingcombinators.cabal
--- a/graphics-drawingcombinators.cabal
+++ b/graphics-drawingcombinators.cabal
@@ -4,7 +4,7 @@
     have to go into the deep, dark world of imperative stateful
     programming just to draw stuff.  It supports 2D only (for now),
     with support drawing geometry, images, and text.
-Version: 1.2.1
+Version: 1.2.2
 Stability: experimental
 Synopsis: A functional interface to 2D drawing in OpenGL
 License: BSD3
