diff --git a/example/Main.hs b/example/Main.hs
--- a/example/Main.hs
+++ b/example/Main.hs
@@ -2,9 +2,8 @@
 module Main where
 import Control.Monad (unless)
 
-import SDL
+import SDL hiding (point, rotate)
 import Linear.V2 (V2(..))
-import Linear.V4 (V4(..))
 import Linear.Affine (Point(..))
 
 import SDL.Cairo
@@ -12,7 +11,7 @@
 
 main :: IO ()
 main = do
-  initialize [InitEverything]
+  initializeAll
   window <- createWindow "SDL2 Cairo Canvas" defaultWindow
   renderer <- createRenderer window (-1) defaultRenderer
 
@@ -99,7 +98,7 @@
 -- ported star example from Processing home page
 drawStars :: Double -> Canvas ()
 drawStars frameCount = do
-  sz@(V2 w h) <- getCanvasSize
+  (V2 w h) <- getCanvasSize
   stroke $ gray 0
 
   pushMatrix
@@ -133,7 +132,7 @@
 -- ported triangle strip example from Processing homepage
 drawTriangleStrip :: V2 Double -> Canvas ()
 drawTriangleStrip mousePos = do
-  sz@(V2 w h) <- getCanvasSize
+  (V2 w h) <- getCanvasSize
   let (V2 mouseX mouseY) = mousePos
       pos = V2 (w/2) (h/4*3)
       n = fromIntegral $ round $ mapRange mouseX (0,w) (6,60)
diff --git a/sdl2-cairo.cabal b/sdl2-cairo.cabal
--- a/sdl2-cairo.cabal
+++ b/sdl2-cairo.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                sdl2-cairo
-version:             0.1.0.2
+version:             0.1.0.3
 synopsis:            Render with Cairo on SDL textures. Includes optional convenience drawing API.
 description:         This small library provides convenience functions to draw
                      on SDL2 textures with Cairo. As Cairo is complicated, it also
@@ -24,8 +24,8 @@
   default-language:    Haskell2010
   exposed-modules:     SDL.Cairo, SDL.Cairo.Canvas, SDL.Cairo.Canvas.Interactive
   --other-modules:
-  build-depends:       base >=4.7 && <=5
-                     , sdl2 >=2.0.0
+  build-depends:       base >=4.7 && <5
+                     , sdl2 >=2.1.0
                      , cairo >=0.13
                      , linear
                      , mtl
@@ -42,8 +42,8 @@
   default-language:    Haskell2010
   default-extensions:  OverloadedStrings
   if flag(builddemo)
-    build-depends:     base >=4 && <=5
-                     , sdl2 >=2.0.0 && <2.1
+    build-depends:     base >=4 && <5
+                     , sdl2 >=2.1.0
                      , cairo >=0.13
                      , sdl2-cairo
                      , linear
diff --git a/src/SDL/Cairo/Canvas.hs b/src/SDL/Cairo/Canvas.hs
--- a/src/SDL/Cairo/Canvas.hs
+++ b/src/SDL/Cairo/Canvas.hs
@@ -15,31 +15,35 @@
 deviates where necessary or appropriate. Nevertheless most Processing examples should be
 trivial to port to the Canvas API. Example:
 
->import SDL
->import Linear.V2 (V2(..))
->import SDL.Cairo
->import SDL.Cairo.Canvas
->
->main :: IO ()
->main = do
->  initialize [InitEverything]
->  window <- createWindow "SDL2 Cairo Canvas" defaultWindow
->  renderer <- createRenderer window (-1) defaultRenderer
->  texture <- createCairoTexture' renderer window
->
->  withCanvas texture $ do
->    background $ gray 102
->    fill $ red 255 !@ 128
->    noStroke
->    rect $ D 200 200 100 100
->    stroke $ green 255 !@ 128
->    fill $ blue 255 !@ 128
->    rect $ D 250 250 100 100
->    triangle (V2 400 300) (V2 350 400) (V2 400 400)
->
->  copy renderer texture Nothing Nothing
->  present renderer
->  delay 5000
+@
+\{\-\# LANGUAGE OverloadedStrings \#\-\}
+import SDL
+import Linear.V2 (V2(..))
+import SDL.Cairo
+import SDL.Cairo.Canvas
+
+main :: IO ()
+main = do
+  initialize [InitEverything]
+  window <- createWindow "SDL2 Cairo Canvas" defaultWindow
+  renderer <- createRenderer window (-1) defaultRenderer
+  texture <- createCairoTexture' renderer window
+
+  withCanvas texture $ do
+    background $ gray 102
+    fill $ red 255 !\@ 128
+    noStroke
+    rect $ D 200 200 100 100
+    stroke $ green 255 !\@ 128
+    fill $ blue 255 !\@ 128
+    rect $ D 250 250 100 100
+    triangle (V2 400 300) (V2 350 400) (V2 400 400)
+
+  copy renderer texture Nothing Nothing
+  present renderer
+  delay 5000
+@
+
 -}
 module SDL.Cairo.Canvas (
   -- * Entry point
diff --git a/src/SDL/Cairo/Canvas/Interactive.hs b/src/SDL/Cairo/Canvas/Interactive.hs
--- a/src/SDL/Cairo/Canvas/Interactive.hs
+++ b/src/SDL/Cairo/Canvas/Interactive.hs
@@ -21,7 +21,7 @@
 -- forks a rendering loop and returns a function to draw in this window.
 getInteractive :: IO (Canvas () -> IO ())
 getInteractive = do
-  initialize [InitEverything]
+  initializeAll
   w <- createWindow "SDL2 Cairo Canvas Interactive" defaultWindow
   r <- createRenderer w (-1) defaultRenderer
   t <- createCairoTexture' r w
@@ -33,4 +33,3 @@
   return $ draw t
   where draw :: Texture -> Canvas () -> IO ()
         draw = withCanvas
-
