diff --git a/GLFW-b.cabal b/GLFW-b.cabal
--- a/GLFW-b.cabal
+++ b/GLFW-b.cabal
@@ -1,5 +1,5 @@
 name:         GLFW-b
-version:      1.0.0
+version:      1.0.1
 category:     Graphics
 
 author:       Brian Lewis <brian@lorf.org>
@@ -56,9 +56,15 @@
   build-depends:
     base              < 5,
     bindings-GLFW    == 0.0.*,
-    template-haskell == 2.8.*,
     th-lift          == 0.5.*
 
+  if impl(ghc < 7.6)
+    build-depends:
+      template-haskell == 2.7.*
+  else
+    build-depends:
+      template-haskell == 2.8.*
+
 --------------------------------------------------------------------------------
 
 test-suite main
@@ -76,10 +82,16 @@
     HUnit                == 1.2.*,
     base                  < 5,
     bindings-GLFW        == 0.0.*,
-    template-haskell     == 2.8.*,
     test-framework       == 0.8.*,
     test-framework-hunit == 0.3.*,
     th-lift              == 0.5.*
+
+  if impl(ghc < 7.6)
+    build-depends:
+      template-haskell == 2.7.*
+  else
+    build-depends:
+      template-haskell == 2.8.*
 
 --------------------------------------------------------------------------------
 
diff --git a/Graphics/UI/GLFW.hs b/Graphics/UI/GLFW.hs
--- a/Graphics/UI/GLFW.hs
+++ b/Graphics/UI/GLFW.hs
@@ -137,16 +137,16 @@
 import Prelude hiding (init)
 
 import Control.Monad         (when)
-import Data.IORef            (IORef, atomicModifyIORef', newIORef)
+import Data.IORef            (IORef, atomicModifyIORef, newIORef)
 import Foreign.C.String      (peekCString, withCString)
 import Foreign.C.Types       (CUInt, CUShort)
 import Foreign.Marshal.Alloc (alloca)
 import Foreign.Marshal.Array (advancePtr, allocaArray, peekArray, withArray)
 import Foreign.Ptr           (FunPtr, freeHaskellFunPtr, nullFunPtr, nullPtr)
-import Foreign.Storable      (Storable(..))
+import Foreign.Storable      (Storable (..))
 import System.IO.Unsafe      (unsafePerformIO)
 
-import Graphics.UI.GLFW.Internal.C           (C(..))
+import Graphics.UI.GLFW.Internal.C           (C (..))
 import Graphics.UI.GLFW.Internal.Instances.C ()
 import Graphics.UI.GLFW.Types
 
@@ -227,7 +227,7 @@
 storeCallback :: IORef (FunPtr a) -> FunPtr a -> IO ()
 storeCallback ior new = do
     -- Store the new FunPtr, retrieve the previous one.
-    prev <- atomicModifyIORef' ior (\cur -> (new, cur))
+    prev <- atomicModifyIORef ior (\cur -> (new, cur))
     -- Free the old FunPtr if necessary.
     when (prev /= nullFunPtr) $ freeHaskellFunPtr prev
 
