diff --git a/scientific.cabal b/scientific.cabal
--- a/scientific.cabal
+++ b/scientific.cabal
@@ -1,5 +1,5 @@
 name:                scientific
-version:             0.3.0.1
+version:             0.3.0.2
 synopsis:            Numbers represented using scientific notation
 description:
   @Data.Scientific@ provides a space efficient and arbitrary precision
@@ -75,7 +75,7 @@
                , tasty-smallcheck >= 0.2   && < 0.9
                , tasty-quickcheck >= 0.8   && < 0.9
                , smallcheck       >= 1.0   && < 1.2
-               , QuickCheck       >= 2.7   && < 2.8
+               , QuickCheck       >= 2.5   && < 2.8
                , text             >= 0.8   && < 1.3
                , bytestring       >= 0.10  && < 0.11
 
diff --git a/test/test.hs b/test/test.hs
--- a/test/test.hs
+++ b/test/test.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
@@ -19,11 +20,15 @@
 import qualified Test.Tasty.QuickCheck              as QC  (testProperty)
 import qualified Data.Text.Lazy                     as TL  (unpack)
 import qualified Data.Text.Lazy.Builder             as TLB (toLazyText)
-import qualified Data.ByteString.Builder            as B
 import qualified Data.ByteString.Lazy.Char8         as BLC8
 import qualified Data.ByteString.Builder.Scientific as B
 import qualified Data.Text.Lazy.Builder.Scientific  as T
 
+#if !MIN_VERSION_bytestring(0,10,2)
+import qualified Data.ByteString.Lazy.Builder       as B
+#else
+import qualified Data.ByteString.Builder            as B
+#endif
 
 main :: IO ()
 main = defaultMain $ testGroup "scientific"
@@ -239,11 +244,19 @@
 ----------------------------------------------------------------------
 
 instance QC.Arbitrary Scientific where
-    arbitrary = scientific <$> QC.arbitrary <*> QC.arbitrary
+    arbitrary = scientific <$> QC.arbitrary <*> intGen
 
     shrink s = zipWith scientific (QC.shrink $ Scientific.coefficient s)
                                   (QC.shrink $ Scientific.base10Exponent s)
 
 nonNegativeScientificGen :: QC.Gen Scientific
-nonNegativeScientificGen = scientific <$> (QC.getNonNegative <$> QC.arbitrary)
-                                      <*> QC.arbitrary
+nonNegativeScientificGen =
+    scientific <$> (QC.getNonNegative <$> QC.arbitrary)
+               <*> intGen
+
+intGen :: QC.Gen Int
+#if MIN_VERSION_QuickCheck(2,7,0)
+intGen = QC.arbitrary
+#else
+intGen = QC.sized $ \n -> QC.choose (-n, n)
+#endif
