diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 0.8.8
+
+* Update to `hpp-0.3.0`
+
 # 0.8.7
 
 * Use `hpp` as a preprocessor rather than `cpphs`
diff --git a/GLUtil.cabal b/GLUtil.cabal
--- a/GLUtil.cabal
+++ b/GLUtil.cabal
@@ -1,5 +1,5 @@
 Name:                GLUtil
-Version:             0.8.7
+Version:             0.8.8
 Synopsis:            Miscellaneous OpenGL utilities.
 License:             BSD3
 License-file:        LICENSE
@@ -51,13 +51,18 @@
                        containers >= 0.5,
                        directory,
                        filepath,
-                       hpp >= 0.1 && < 0.2,
                        linear >= 1.1.3,
                        JuicyPixels >= 3,
                        OpenGLRaw >= 1.1,
                        OpenGL >= 2.9.2 && < 2.14,
                        transformers >= 0.3,
                        vector >= 0.7
-  Build-tools:         
+  if impl(ghc >= 7.10.1)
+    Build-depends:     hpp >= 0.3 && < 0.4
+    GHC-Options:       -pgmPhpp -optP--cpp -optP-P
+  else
+    Build-tools:       cpphs
+    GHC-Options:       -pgmPcpphs -optP--cpp -optP--hashes
+
   GHC-Options:         -Odph -Wall
   HS-Source-Dirs:      src
diff --git a/src/Graphics/GLUtil/Linear.hs b/src/Graphics/GLUtil/Linear.hs
--- a/src/Graphics/GLUtil/Linear.hs
+++ b/src/Graphics/GLUtil/Linear.hs
@@ -1,6 +1,5 @@
-{-# LANGUAGE DefaultSignatures, FlexibleInstances, FlexibleContexts,
+{-# LANGUAGE CPP, DefaultSignatures, FlexibleInstances, FlexibleContexts,
              ScopedTypeVariables #-}
-{-# OPTIONS_GHC -cpp -pgmPhpp -optP--cpp #-}
 -- |Support for writing "Linear" types to uniform locations in
 -- shader programs.
 module Graphics.GLUtil.Linear (AsUniform(..)) where
diff --git a/src/Graphics/GLUtil/TypeMapping.hs b/src/Graphics/GLUtil/TypeMapping.hs
--- a/src/Graphics/GLUtil/TypeMapping.hs
+++ b/src/Graphics/GLUtil/TypeMapping.hs
@@ -78,11 +78,11 @@
 variableDataType FloatMat2 = GL.Float
 variableDataType FloatMat3 = GL.Float
 variableDataType FloatMat4 = GL.Float
-variableDataType FloatMat2x3 = GL.Float	
-variableDataType FloatMat2x4 = GL.Float	 
-variableDataType FloatMat3x2 = GL.Float	 
-variableDataType FloatMat3x4 = GL.Float	 
-variableDataType FloatMat4x2 = GL.Float	 
+variableDataType FloatMat2x3 = GL.Float
+variableDataType FloatMat2x4 = GL.Float
+variableDataType FloatMat3x2 = GL.Float
+variableDataType FloatMat3x4 = GL.Float
+variableDataType FloatMat4x2 = GL.Float
 variableDataType FloatMat4x3 = GL.Float
 variableDataType _ = error "Unsupported variable type!"
 
