diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,8 @@
 # Changelog
 
+## 0.3.2.4
+* Relaxed doctest upper bound once more, see [stackage issue 2663](https://github.com/fpco/stackage/issues/2663#issuecomment-319880160).
+
 ## 0.3.2.3
 * Relaxed doctest upper bound.
 
diff --git a/hasmin.cabal b/hasmin.cabal
--- a/hasmin.cabal
+++ b/hasmin.cabal
@@ -1,5 +1,5 @@
 name:                hasmin
-version:             0.3.2.3
+version:             0.3.2.4
 license:             BSD3
 license-file:        LICENSE
 author:              (c) 2017 Cristian Adrián Ontivero <cristianontivero@gmail.com>
@@ -128,7 +128,7 @@
   main-is:             DocTest.hs
   ghc-options:         -threaded -Wall -fno-warn-orphans
   build-depends:       base             >=4.9     && <5.1
-                     , doctest          >=0.11    && <0.13
+                     , doctest          >=0.11    && <0.14
                      , doctest-discover >=0.1.0.0 && <0.2
                      , hasmin
 
diff --git a/src/Hasmin/Parser/Internal.hs b/src/Hasmin/Parser/Internal.hs
--- a/src/Hasmin/Parser/Internal.hs
+++ b/src/Hasmin/Parser/Internal.hs
@@ -113,13 +113,6 @@
 identOrString :: Parser (Either Text StringType)
 identOrString = (Left <$> ident) <|> (Right <$> stringtype)
 
-{-
--- string1: \"([^\n\r\f\\"]|\\{nl}|{escape})*\"
-string1 = char '\"' *> many (o1 <|> o2 <|> escape)
-  where o1 = satisfy (c -> c /= '\"' && c /= '\\' && c /= '\n')
-        o2 = char '\\' *> newline $> mempty
--}
-
 -- type_selector: [namespace_prefix]? element_name
 typeSelector :: Parser SimpleSelector
 typeSelector = Type <$> opt namespacePrefix <*> ident
diff --git a/src/Hasmin/Parser/Utils.hs b/src/Hasmin/Parser/Utils.hs
--- a/src/Hasmin/Parser/Utils.hs
+++ b/src/Hasmin/Parser/Utils.hs
@@ -8,8 +8,8 @@
 -- Portability : unknown
 --
 -----------------------------------------------------------------------------
-module Hasmin.Parser.Utils (
-    ident
+module Hasmin.Parser.Utils
+    ( ident
     , fontfamilyname
     , nonquotedurl
     , skipComments
diff --git a/src/Hasmin/Properties.hs b/src/Hasmin/Properties.hs
--- a/src/Hasmin/Properties.hs
+++ b/src/Hasmin/Properties.hs
@@ -8,10 +8,10 @@
 -- Portability : unknown
 --
 -----------------------------------------------------------------------------
-module Hasmin.Properties (
-       PropertyInfo(..)
-     , shorthandAndLonghandsMap
-     , propertiesTraits
+module Hasmin.Properties
+    ( PropertyInfo(..)
+    , shorthandAndLonghandsMap
+    , propertiesTraits
     ) where
 
 import Data.Attoparsec.Text (parseOnly)
diff --git a/src/Hasmin/Types/Class.hs b/src/Hasmin/Types/Class.hs
--- a/src/Hasmin/Types/Class.hs
+++ b/src/Hasmin/Types/Class.hs
@@ -8,8 +8,9 @@
 -- Portability : non-portable
 --
 -----------------------------------------------------------------------------
-module Hasmin.Types.Class (
-    ToText(..), Minifiable(..)
+module Hasmin.Types.Class
+    ( ToText(..)
+    , Minifiable(..)
     ) where
 
 import Control.Monad.Reader (Reader, runReader)
diff --git a/src/Hasmin/Types/Selector.hs b/src/Hasmin/Types/Selector.hs
--- a/src/Hasmin/Types/Selector.hs
+++ b/src/Hasmin/Types/Selector.hs
@@ -214,26 +214,6 @@
   toBuilder Plus  = singleton '+'
   toBuilder Minus = singleton '-'
 
-{- data AValue = Nwith (Maybe Sign) (Maybe Int) -- at least a lone 'n'
-            | NoValue -- The "An" part is omitted.
-  deriving (Eq, Show)
-instance ToText AValue where
-  toBuilder NoValue     = mempty
-  toBuilder (Nwith s i) = maybeToBuilder s <> maybeToBuilder i <> singleton 'n'
-    where maybeToBuilder :: ToText a => Maybe a -> Builder
-          maybeToBuilder = maybe mempty toBuilder
-
-minifyAValue :: AValue -> AValue
-minifyAValue (Nwith _ (Just 0)) = NoValue
-minifyAValue (Nwith s a)
-    | isPositive s = Nwith Nothing (maybe Nothing droppedOne a)
-    | otherwise    = Nwith s (maybe Nothing droppedOne a)
-  where droppedOne x = if x == 1
-                         then Nothing
-                         else Just x
-minifyAValue NoValue = NoValue
--}
-
 -- We could maybe model the AB constructor with an Either,
 -- to make sure AB NoValue Nothing isn't possible (which is invalid).
 -- Also, modelling a BValue would cover all remaining cases,
diff --git a/src/Hasmin/Types/TransformFunction.hs b/src/Hasmin/Types/TransformFunction.hs
--- a/src/Hasmin/Types/TransformFunction.hs
+++ b/src/Hasmin/Types/TransformFunction.hs
@@ -10,8 +10,11 @@
 -- CSS \<transform-function> data type.
 --
 -----------------------------------------------------------------------------
-module Hasmin.Types.TransformFunction (
-    TransformFunction(..), mkMat, mkMat3d, combine
+module Hasmin.Types.TransformFunction
+    ( TransformFunction(..)
+    , mkMat
+    , mkMat3d
+    , combine
     ) where
 
 import Control.Monad.Reader (mapReader, Reader, ask, local)
diff --git a/src/Hasmin/Utils.hs b/src/Hasmin/Utils.hs
--- a/src/Hasmin/Utils.hs
+++ b/src/Hasmin/Utils.hs
@@ -8,8 +8,8 @@
 -- Portability : unknown
 --
 -----------------------------------------------------------------------------
-module Hasmin.Utils (
-      isRight
+module Hasmin.Utils
+    ( isRight
     , isLeft
     , epsilon
     , eps
