diff --git a/Calculate.hs b/Calculate.hs
--- a/Calculate.hs
+++ b/Calculate.hs
@@ -1,9 +1,10 @@
 {-# LANGUAGE BangPatterns #-}
+{-# LANGUAGE FlexibleContexts #-}
 
 {-
 
     gmndl -- Mandelbrot Set explorer
-    Copyright (C) 2010,2011,2014  Claude Heiland-Allen <claude@mathr.co.uk>
+    Copyright (C) 2010,2011,2014,2017  Claude Heiland-Allen <claude@mathr.co.uk>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
diff --git a/Image.hs b/Image.hs
--- a/Image.hs
+++ b/Image.hs
@@ -1,9 +1,10 @@
 {-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE PatternSynonyms #-}
 
 {-
 
     gmndl -- Mandelbrot Set explorer
-    Copyright (C) 2010,2011,2014  Claude Heiland-Allen <claude@mathr.co.uk>
+    Copyright (C) 2010,2011,2014,2017  Claude Heiland-Allen <claude@mathr.co.uk>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -29,7 +30,7 @@
 import Foreign.C (CInt(..), CSize(..))
 import qualified Graphics.Rendering.OpenGL as GL
 import Graphics.Rendering.OpenGL (($=))
-import Graphics.Rendering.OpenGL.Raw (glGenerateMipmap, gl_TEXTURE_2D)
+import Graphics.GL (glGenerateMipmap, pattern GL_TEXTURE_2D)
 import System.IO (Handle, hPutBuf, hPutStr, stdout)
 
 data Image
@@ -87,7 +88,7 @@
       img = GL.PixelData GL.RGB GL.UnsignedByte (pixels i)
   with i $ do
     GL.texSubImage2D GL.Texture2D 0 pos dim img
-    glGenerateMipmap gl_TEXTURE_2D
+    glGenerateMipmap GL_TEXTURE_2D
 
 -- use a texture
 -- FIXME TODO preserve the previous texture binding instead of clearing
diff --git a/gmndl.cabal b/gmndl.cabal
--- a/gmndl.cabal
+++ b/gmndl.cabal
@@ -1,5 +1,5 @@
 Name:               gmndl
-Version:            0.4.0.2
+Version:            0.4.0.4
 Synopsis:           Mandelbrot Set explorer using GTK
 
 Description:
@@ -33,25 +33,24 @@
                     Roots
   Build-depends:    base >= 4 && < 5,
                     array >= 0.5 && < 0.6,
-                    gtk >= 0.12 && < 0.13,
-                    gtkglext >= 0.12 && < 0.13,
+                    gtk >= 0.12 && < 0.15,
+                    gtkglext >= 0.12 && < 0.14,
                     mtl >= 2.2 && < 2.3,
-                    OpenGL >= 2.9 && < 2.10,
-                    OpenGLRaw >= 1.5 && < 1.6,
+                    OpenGL >= 3.0 && < 3.1,
+                    OpenGLRaw >= 3.2 && < 3.3,
                     parsec >= 3.1 && < 3.2,
                     priority-queue >= 0.2 && < 0.3,
                     qd >= 1.0 && < 1.1,
-                    ad >= 4.2 && < 4.3,
-                    reflection >= 1.5 && < 1.6,
+                    ad >= 4.2 && < 4.4,
+                    reflection >= 1.5 && < 2.2,
                     Vec >= 1.0 && < 1.1
   GHC-options:      -O2 -Wall -threaded -fno-excess-precision -funbox-strict-fields -rtsopts
-  GHC-prof-options: -O2 -Wall -threaded -fno-excess-precision -funbox-strict-fields -rtsopts -prof -auto-all -caf-all
 
 source-repository head
   type:     git
-  location: git://gitorious.org/maximus/gmndl.git
+  location: https://code.mathr.co.uk/gmndl.git
 
 source-repository this
   type:     git
-  location: git://gitorious.org/maximus/gmndl.git
-  tag:      v0.4.0.2
+  location: https://code.mathr.co.uk/gmndl.git
+  tag:      v0.4.0.4
