diff --git a/SnowGlobe.hs b/SnowGlobe.hs
--- a/SnowGlobe.hs
+++ b/SnowGlobe.hs
@@ -2,11 +2,11 @@
 -- (GPL3+) 2012 Claude Heiland-Allen <claude@mathr.co.uk>
 -- usage: snowglobe
 -- 'f' toggles full screen, 'shift-R' toggles record, any other key to quit
--- tested with: ghc-7.0.4, ghc-7.4-rc1, ghc-7.4.2
+-- tested with: ghc-7.0.4, ghc-7.4-rc1, ghc-7.4.2, ghc-7.6.2
 
 import Numeric.LinearAlgebra hiding (i, reshape)
 import qualified Numeric.LinearAlgebra as L
-import Graphics.UI.GLUT hiding (scale)
+import Graphics.UI.GLUT hiding (scale, FramebufferObject)
 import qualified Graphics.UI.GLUT as GL
 import Graphics.Rendering.OpenGL.Raw
   ( glTexImage2D, gl_TEXTURE_2D, gl_LUMINANCE32F, gl_LUMINANCE, gl_RGBA
@@ -33,11 +33,11 @@
 
 shader :: Maybe String -> Maybe String -> IO Program
 shader mV mF = do
-  [p] <- genObjectNames 1
+  p <- createProgram
   vs <- case mV of
     Nothing -> return []
     Just v -> do
-      [vert] <- genObjectNames 1
+      vert <- createShader VertexShader
       shaderSource vert $= [ v ]
       compileShader vert
       msg <- get (shaderInfoLog vert)
@@ -46,13 +46,13 @@
   fs <- case mF of
     Nothing -> return []
     Just f -> do
-      [frag] <- genObjectNames 1
+      frag <- createShader FragmentShader
       shaderSource frag $= [ f ]
       compileShader frag
       msg <- get (shaderInfoLog frag)
       when (not (null msg)) $ hPutStrLn stderr msg
       return [frag]
-  attachedShaders p $= (vs, fs)
+  attachedShaders p $= concat [vs, fs]
   linkProgram p
   msg <- get (programInfoLog p)
   when (not (null msg)) $ hPutStrLn stderr msg
@@ -75,7 +75,7 @@
 unsafeCoerceGLfloat = unsafeCoerce
 
 size :: N
-size = 1024
+size = 2048
 
 er :: R
 er = 4
@@ -84,7 +84,7 @@
 accuracy = 1 / fromIntegral size
 
 tSize :: N
-tSize = 512
+tSize = 1024
 
 maxSpeed :: R
 maxSpeed = 10
diff --git a/snowglobe.cabal b/snowglobe.cabal
--- a/snowglobe.cabal
+++ b/snowglobe.cabal
@@ -1,5 +1,5 @@
 Name:                snowglobe
-Version:             2
+Version:             2.0.0.2
 Synopsis:            randomized fractal snowflakes demo
 Description:         @snowglobe@ generates random snowflakes using iterated
                      function systems via OpenGL texture feedback.  The
@@ -31,6 +31,7 @@
     gl-capture,
     GLUT,
     hmatrix,
+    OpenGL == 2.9.*,
     OpenGLRaw,
     random
 
@@ -41,4 +42,4 @@
 Source-repository this
   type:                git
   location:            git://gitorious.org/maximus/snowglobe.git
-  tag:                 v2
+  tag:                 v2.0.0.2
