diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## [v1.4.0.1](https://github.com/diagrams/diagrams-lib/tree/v1.4.0.1) (2016-11-07)
+
+- Fix test suite compilation problem ([#286](https://github.com/diagrams/diagrams-lib/issues/286))
+
 ## [v1.4](https://github.com/diagrams/diagrams-lib/tree/v1.4) (2016-10-26)
 
 * **New features**
diff --git a/diagrams-lib.cabal b/diagrams-lib.cabal
--- a/diagrams-lib.cabal
+++ b/diagrams-lib.cabal
@@ -1,5 +1,5 @@
 Name:                diagrams-lib
-Version:             1.4
+Version:             1.4.0.1
 Synopsis:            Embedded domain-specific language for declarative graphics
 Description:         Diagrams is a flexible, extensible EDSL for creating
                      graphics of many types.  Graphics can be created
@@ -148,6 +148,7 @@
   type: exitcode-stdio-1.0
   main-is: Test.hs
   other-modules: Diagrams.Test.Direction
+               , Diagrams.Test.Trail
                , Diagrams.Test.Transform
                , Diagrams.Test.TwoD.Offset
                , Diagrams.Test.TwoD
diff --git a/test/Diagrams/Test/Trail.hs b/test/Diagrams/Test/Trail.hs
new file mode 100644
--- /dev/null
+++ b/test/Diagrams/Test/Trail.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE FlexibleContexts #-}
+
+
+module Diagrams.Test.Trail where
+
+import           Diagrams.Prelude
+import           Instances
+import           Test.Tasty
+import           Test.Tasty.QuickCheck
+
+tests :: TestTree
+tests = testGroup "Trail"
+  [ let wrap :: Trail' Line V2 Double -> Located (Trail V2 Double)
+        wrap = (`at` origin) . wrapLine
+    in
+    testProperty "unfixTrail . fixTrail == id for lines" $
+    \l -> (unfixTrail . fixTrail $ wrap l) =~ (wrap l)
+
+  , testProperty "glueLine . cutLoop == id" $
+    \loop -> (glueLine . cutLoop $ loop) =~ (loop :: Trail' Loop V2 Double)
+
+  , testProperty "trailOffset == sumV . trailOffsets" $
+    \t -> trailOffset t =~ (sumV . trailOffsets $ (t :: Trail V2 Double))
+
+  , testProperty "reverseTrail . reverseTrail == id" $
+    \t -> (reverseTrail . reverseTrail $ t) =~ (t :: Trail V2 Double)
+
+  , testProperty "reverseLocTrail . reverseLocTrail == id" $
+    \t -> (reverseLocTrail . reverseLocTrail $ t) =~
+          (t :: Located (Trail V2 Double))
+
+  , testProperty "reverseLine . reverseLine == id" $
+    \t -> (reverseLine . reverseLine $ t) =~
+          (t :: Trail' Line V2 Double)
+
+  , testProperty "reverseLocLine . reverseLocLine == id" $
+    \t -> (reverseLocLine . reverseLocLine $ t) =~
+          (t :: Located (Trail' Line V2 Double))
+
+  , testProperty "reverseLoop . reverseLoop == id" $
+    \t -> (reverseLoop . reverseLoop $ t) =~
+          (t :: Trail' Loop V2 Double)
+
+  , testProperty "reverseLocLoop . reverseLocLoop == id" $
+    \t -> (reverseLocLoop . reverseLocLoop $ t) =~
+          (t :: Located (Trail' Loop V2 Double))
+
+  ]
