diff --git a/Criterion/Monad/Internal.hs b/Criterion/Monad/Internal.hs
--- a/Criterion/Monad/Internal.hs
+++ b/Criterion/Monad/Internal.hs
@@ -20,7 +20,8 @@
 import Control.Monad.Catch (MonadThrow, MonadCatch, MonadMask)
 import qualified Control.Monad.Fail as Fail (MonadFail(..))
 import Control.Monad.Reader (MonadReader(..), ReaderT)
-import Control.Monad.Trans (MonadIO, lift)
+import Control.Monad.Trans (MonadIO)
+import Control.Monad.Trans.Instances ()
 import Criterion.Types (Config)
 import Data.IORef (IORef)
 import Prelude ()
@@ -35,15 +36,10 @@
 -- | The monad in which most criterion code executes.
 newtype Criterion a = Criterion {
       runCriterion :: ReaderT Crit IO a
-    } deriving (Functor, Applicative, Monad, MonadIO, MonadThrow, MonadCatch, MonadMask)
+    } deriving ( Functor, Applicative, Monad, Fail.MonadFail, MonadIO
+               , MonadThrow, MonadCatch, MonadMask )
 
 instance MonadReader Config Criterion where
     ask     = config `fmap` Criterion ask
     local f = Criterion . local fconfig . runCriterion
       where fconfig c = c { config = f (config c) }
-
--- ReaderT has a MonadFail instance, but only on GHC 8.0+, so I inline the
--- fail implementation for ReaderT here to compensate. (Otherwise, I'd just
--- derive this instance.)
-instance Fail.MonadFail Criterion where
-  fail = Criterion . lift . Fail.fail
diff --git a/Criterion/Report.hs b/Criterion/Report.hs
--- a/Criterion/Report.hs
+++ b/Criterion/Report.hs
@@ -325,6 +325,12 @@
 #if defined(EMBED)
   `E.catch` \(e :: IOException) ->
     maybe (throwIO e)
-          (pure . TLE.decodeUtf8 . BL.fromStrict)
+          (pure . TLE.decodeUtf8 . fromStrict)
           (lookup fp dataFiles)
+  where
+# if MIN_VERSION_bytestring(0,10,0)
+    fromStrict = BL.fromStrict
+# else
+    fromStrict x = BL.fromChunks [x]
+# endif
 #endif
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,8 @@
+1.5.5.0
+
+* Fix the build on old GHCs with the `embed-data-files` flag.
+* Require `transformers-compat-0.6.4` or later.
+
 1.5.4.0
 
 * Add `parserWith`, which allows creating a `criterion` command-line interface
diff --git a/criterion.cabal b/criterion.cabal
--- a/criterion.cabal
+++ b/criterion.cabal
@@ -1,5 +1,5 @@
 name:           criterion
-version:        1.5.4.0
+version:        1.5.5.0
 synopsis:       Robust, reliable performance measurement and analysis
 license:        BSD3
 license-file:   LICENSE
@@ -25,7 +25,8 @@
   GHC==8.0.2,
   GHC==8.2.2,
   GHC==8.4.4,
-  GHC==8.6.3
+  GHC==8.6.5,
+  GHC==8.8.1
 
 data-files:
   templates/*.css
@@ -103,7 +104,7 @@
     text >= 0.11,
     time,
     transformers,
-    transformers-compat >= 0.4,
+    transformers-compat >= 0.6.4,
     vector >= 0.7.1,
     vector-algorithms >= 0.4
   if impl(ghc < 7.6)
diff --git a/examples/criterion-examples.cabal b/examples/criterion-examples.cabal
--- a/examples/criterion-examples.cabal
+++ b/examples/criterion-examples.cabal
@@ -18,7 +18,8 @@
   GHC==8.0.2,
   GHC==8.2.2,
   GHC==8.4.4,
-  GHC==8.6.3
+  GHC==8.6.5,
+  GHC==8.8.1
 
 flag conduit-vs-pipes
   default: True
