diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+3.0.0.2
+-------
+* Removed redundant constraints.
+
 3.0.0.1
 -------
 * Relaxed upper version bound for `OpenGLRaw`.
diff --git a/OpenGL.cabal b/OpenGL.cabal
--- a/OpenGL.cabal
+++ b/OpenGL.cabal
@@ -1,5 +1,5 @@
 name: OpenGL
-version: 3.0.0.1
+version: 3.0.0.2
 synopsis: A binding for the OpenGL graphics system
 description:
   A Haskell binding for the OpenGL graphics system (GL, version 4.5) and its
@@ -20,6 +20,11 @@
 maintainer: Sven Panne <svenpanne@gmail.com>, Jason Dagit <dagitj@gmail.com>
 category: Graphics
 build-type: Simple
+tested-with:
+  GHC == 7.8.4
+  GHC == 7.10.3
+  GHC == 8.0.1
+  GHC == 8.1
 cabal-version: >= 1.10
 extra-source-files:
    CHANGELOG.md
@@ -147,6 +152,8 @@
     Graphics.Rendering.OpenGL.GLU.ErrorsInternal
   hs-source-dirs: src
   ghc-options: -Wall
+  if impl(ghc > 8)
+    ghc-options: -Wcompat
   build-depends:
     base         >= 3   && < 5,
     bytestring   >= 0.9 && < 0.11,
diff --git a/src/Graphics/Rendering/OpenGL/GL/Evaluators.hs b/src/Graphics/Rendering/OpenGL/GL/Evaluators.hs
--- a/src/Graphics/Rendering/OpenGL/GL/Evaluators.hs
+++ b/src/Graphics/Rendering/OpenGL/GL/Evaluators.hs
@@ -74,11 +74,11 @@
    MapDescriptor (d, d) Stride Order NumComponents
    deriving ( Eq, Ord, Show )
 
-totalComponents1 :: Domain d => MapDescriptor d -> Int
+totalComponents1 :: MapDescriptor d -> Int
 totalComponents1 (MapDescriptor _ stride order numComp) =
    fromIntegral stride * (fromIntegral order - 1) + fromIntegral numComp
 
-totalComponents2 :: Domain d => MapDescriptor d -> MapDescriptor d -> Int
+totalComponents2 :: MapDescriptor d -> MapDescriptor d -> Int
 totalComponents2 uDescriptor vDescriptor@(MapDescriptor _ _ _ numComp) =
    totalComponents1 uDescriptor + totalComponents1 vDescriptor - fromIntegral numComp
 
diff --git a/src/Graphics/Rendering/OpenGL/GL/QueryUtils/PName.hs b/src/Graphics/Rendering/OpenGL/GL/QueryUtils/PName.hs
--- a/src/Graphics/Rendering/OpenGL/GL/QueryUtils/PName.hs
+++ b/src/Graphics/Rendering/OpenGL/GL/QueryUtils/PName.hs
@@ -113,7 +113,7 @@
     getClampd1 = get1 getDoublev
 
 -- | Helper function for the get*1 functions.
-get1 :: (Storable b, Storable c, GetPName p)
+get1 :: (Storable b, Storable c)
     => (p -> Ptr c -> IO ())
     -> (b -> a) -- ^ Conversion from the casted value to the return value
     -> p -> IO a
@@ -138,7 +138,7 @@
     getInteger641i = get1i getInteger64iv
 
 -- Indexed helper
-get1i :: (Storable b, Storable c, GetPName p)
+get1i :: (Storable b, Storable c)
     => (p -> GLuint -> Ptr c -> IO ())
     -> (b -> a) -- ^ Conversion from the casted value to the return value
     -> p -> GLuint -> IO a
@@ -175,7 +175,7 @@
     getClampd2 = get2 getDoublev
 
 -- | Helper function for the get*2 functions.
-get2 :: (Storable b, Storable c, GetPName p)
+get2 :: (Storable b, Storable c)
     => (p -> Ptr c -> IO ())
     -> (b -> b -> a) -- ^ Conversion from the casted value to the return value
     -> p -> IO a
@@ -212,7 +212,7 @@
     getClampd3 = get3 getDoublev
 
 -- | Helper function for the get*3 functions.
-get3 :: (Storable b, Storable c, GetPName p)
+get3 :: (Storable b, Storable c)
     => (p -> Ptr c -> IO ())
     -> (b -> b -> b -> a) -- ^ Conversion from the casted value to the return value
     -> p -> IO a
@@ -249,7 +249,7 @@
     getClampd4 = get4 getDoublev
 
 -- | Helper function for the get*4 functions.
-get4 :: (Storable b, Storable c, GetPName p)
+get4 :: (Storable b, Storable c)
     => (p -> Ptr c -> IO ())
     -> (b -> b -> b -> b -> a) -- ^ Conversion from the casted value to the return value
     -> p -> IO a
@@ -271,7 +271,7 @@
     getSizei4i = get4i getIntegeriv
 
 -- | Helper function for the get*4 functions.
-get4i :: (Storable b, Storable c, GetPName p)
+get4i :: (Storable b, Storable c)
     => (p -> GLuint -> Ptr c -> IO ())
     -> (b -> b -> b -> b -> a) -- ^ Conversion from the casted value to the return value
     -> p -> GLuint -> IO a
diff --git a/src/Graphics/Rendering/OpenGL/GL/Shaders/Uniform.hs b/src/Graphics/Rendering/OpenGL/GL/Shaders/Uniform.hs
--- a/src/Graphics/Rendering/OpenGL/GL/Shaders/Uniform.hs
+++ b/src/Graphics/Rendering/OpenGL/GL/Shaders/Uniform.hs
@@ -157,7 +157,7 @@
                         getUniform program location buf
                         peek buf
 
-getSimpleUniform :: Storable a => Program -> UniformLocation -> Ptr a -> IO ()
+getSimpleUniform :: Program -> UniformLocation -> Ptr a -> IO ()
 getSimpleUniform (Program p) (UniformLocation ul) = glGetUniformfv p ul . castPtr
 
 makeSimpleUniformVar :: (UniformComponent a)
diff --git a/src/Graphics/Rendering/OpenGL/GL/Texturing/Parameters.hs b/src/Graphics/Rendering/OpenGL/GL/Texturing/Parameters.hs
--- a/src/Graphics/Rendering/OpenGL/GL/Texturing/Parameters.hs
+++ b/src/Graphics/Rendering/OpenGL/GL/Texturing/Parameters.hs
@@ -212,8 +212,7 @@
 
 --------------------------------------------------------------------------------
 
-combineTexParams :: ParameterizedTextureTarget t
-                 => (t -> StateVar a)
+combineTexParams :: (t -> StateVar a)
                  -> (t -> StateVar b)
                  -> (t -> StateVar (a,b))
 combineTexParams v w t =
@@ -221,8 +220,7 @@
       (liftM2 (,) (get (v t)) (get (w t)))
       (\(x,y) -> do v t $= x; w t $= y)
 
-combineTexParamsMaybe :: ParameterizedTextureTarget t
-                      => (t -> StateVar Capability)
+combineTexParamsMaybe :: (t -> StateVar Capability)
                       -> (t -> StateVar a)
                       -> (t -> StateVar (Maybe a))
 combineTexParamsMaybe enab val t =
