diff --git a/src/Yesod/Media/Simple.hs b/src/Yesod/Media/Simple.hs
--- a/src/Yesod/Media/Simple.hs
+++ b/src/Yesod/Media/Simple.hs
@@ -1,12 +1,13 @@
 {-# LANGUAGE TupleSections #-}
-{-# LANGUAGE ParallelListComp #-}
-{-# LANGUAGE TupleSections #-}
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE ParallelListComp #-}
 {-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TupleSections #-}
+{-# LANGUAGE TypeFamilies #-}
 
 -- | Easily serve different media types to the user.
 module Yesod.Media.Simple
@@ -30,14 +31,15 @@
 import           Codec.Picture
 import           Control.Exception (finally)
 import qualified Data.ByteString.Lazy as LBS
-import           Data.Monoid (mempty)
+import           Data.Monoid (Any)
 import qualified Data.Vector.Storable as V
 import           Data.Word
 import           Diagrams.Backend.Cairo
 import           Diagrams.Core
-import           Diagrams.Prelude (R2)
-import           Diagrams.TwoD (SizeSpec2D(..))
+import           Diagrams.Prelude (V2)
+import           Diagrams.Size (SizeSpec)
 import qualified Diagrams.TwoD.Image as Dia
+import           Diagrams.TwoD.Size
 import           System.Directory (getTemporaryDirectory)
 import           System.Environment (lookupEnv, setEnv, unsetEnv)
 import           System.IO (openTempFile, hClose)
@@ -75,16 +77,16 @@
 
 -- | A type-specialized version of 'serve'.  This is usually preferred
 -- to 'serve' because Diagrams tend to be polymorphic - this fixes the
--- input data to be a @Diagram Cairo R2@.
-serveDiagram :: Diagram Cairo R2 -> IO ()
+-- input data to be a @Diagram Cairo@.
+serveDiagram :: Diagram Cairo -> IO ()
 serveDiagram = serve
 
-instance RenderContent (Diagram Cairo R2) where
-    renderContent = renderContent . SizedDiagram (Width 640)
+instance RenderContent (QDiagram Cairo V2 Double Any) where
+    renderContent = renderContent . SizedDiagram (mkWidth 640)
 
 -- | 'SizedDiagram' can be used to specify the output size of the
 -- diagram when rendering it with Cairo.
-data SizedDiagram = SizedDiagram SizeSpec2D (Diagram Cairo R2)
+data SizedDiagram = SizedDiagram (SizeSpec V2 Double) (Diagram Cairo)
 
 instance RenderContent SizedDiagram where
     renderContent (SizedDiagram sz dia) = do
@@ -142,7 +144,7 @@
 -- | Convert a JuicyPixels 'Image' to an image embedded in the
 -- 'Diagram'. Note that this image is *NOT* renderable by the Cairo
 -- backend, which is used by other functions in this module.
-imageToDiagramEmb :: (Renderable (Dia.DImage Dia.Embedded) b) => DynamicImage -> Diagram b R2
+imageToDiagramEmb :: (Renderable (Dia.DImage (N b) Dia.Embedded) b, V b ~ V2, TypeableFloat (N b)) => DynamicImage -> Diagram b
 imageToDiagramEmb img =
     imageFromDynamicImage img $ \img' ->
         let w = fromIntegral (imageWidth img')
@@ -153,7 +155,7 @@
 -- directory, and create a diagram which references this 'Image' file.
 -- Unlike imageToDiagramEmb, this Diagram can be rendered by the Cairo
 -- backend.
-imageToDiagramExt :: (Renderable (Dia.DImage Dia.External) b) => DynamicImage -> IO (Diagram b R2)
+imageToDiagramExt :: (Renderable (Dia.DImage (N b) Dia.External) b, V b ~ V2, TypeableFloat (N b)) => DynamicImage -> IO (Diagram b)
 imageToDiagramExt img =
     imageFromDynamicImage img $ \img' -> do
         path <- getTempPath "out.png"
@@ -180,10 +182,10 @@
 imageFromDynamicImage (ImageCMYK16 img) f = f img
 
 -- | Convert a 'Diagram' to a JuicyPixels 'Image'.
-diagramToImage :: Diagram Cairo R2 -> Double -> Double -> IO (Either String DynamicImage)
+diagramToImage :: Diagram Cairo -> Double -> Double -> IO (Either String DynamicImage)
 diagramToImage dia w h = do
     path <- getTempPath "out.png"
-    renderCairo path (Dims w h) dia
+    renderCairo path (dims2D w h) dia
     readPng path
 
 -- | Set PORT environment variable to 3000 if it's unset.  Tells
diff --git a/yesod-media-simple.cabal b/yesod-media-simple.cabal
--- a/yesod-media-simple.cabal
+++ b/yesod-media-simple.cabal
@@ -1,5 +1,5 @@
 name:                yesod-media-simple
-version:             0.1.0.1
+version:             0.2.0.0
 synopsis:            Simple display of media types, served by yesod
 homepage:            https://github.com/mgsloan/yesod-media-simple
 license:             MIT
@@ -21,7 +21,7 @@
                        bytestring,
                        diagrams-cairo,
                        diagrams-core,
-                       diagrams-lib,
+                       diagrams-lib >= 1.3 && < 1.4,
                        directory,
                        JuicyPixels,
                        vector,
