diff --git a/CHANGES.markdown b/CHANGES.markdown
--- a/CHANGES.markdown
+++ b/CHANGES.markdown
@@ -1,3 +1,8 @@
+## Changes in 0.10.4 [2018.07.03]
+ - Make more modules `Trustworthy`. In particular, fix a regression in which
+   `Prelude.Compat` was inferred as `Unsafe` by explicitly marking it as
+   `Trustwothy`.
+
 ## Changes in 0.10.3 [2018.07.02]
  - Backport the proper fixity for `($!)`, which was accidentally omitted in
    `base-compat-0.10.2`.
diff --git a/base-compat.cabal b/base-compat.cabal
--- a/base-compat.cabal
+++ b/base-compat.cabal
@@ -1,5 +1,5 @@
 name:             base-compat
-version:          0.10.3
+version:          0.10.4
 license:          MIT
 license-file:     LICENSE
 copyright:        (c) 2012-2018 Simon Hengel,
@@ -69,6 +69,8 @@
       build-depends: unix
   ghc-options:
       -fno-warn-duplicate-exports
+  if impl(ghc >= 7.10)
+    ghc-options: -fno-warn-trustworthy-safe
 
   hs-source-dirs:
       src
diff --git a/src/Control/Concurrent/Compat.hs b/src/Control/Concurrent/Compat.hs
--- a/src/Control/Concurrent/Compat.hs
+++ b/src/Control/Concurrent/Compat.hs
@@ -1,5 +1,8 @@
 {-# LANGUAGE CPP, NoImplicitPrelude #-}
 {-# LANGUAGE RankNTypes #-}
+#if __GLASGOW_HASKELL__ >= 702
+{-# LANGUAGE Trustworthy #-}
+#endif
 module Control.Concurrent.Compat (
   module Base
 , forkFinally
diff --git a/src/Control/Exception/Compat.hs b/src/Control/Exception/Compat.hs
--- a/src/Control/Exception/Compat.hs
+++ b/src/Control/Exception/Compat.hs
@@ -1,4 +1,7 @@
 {-# LANGUAGE CPP, NoImplicitPrelude #-}
+#if __GLASGOW_HASKELL__ >= 702
+{-# LANGUAGE Trustworthy #-}
+#endif
 #if MIN_VERSION_base(4,10,0)
 {-# LANGUAGE MagicHash #-}
 {-# LANGUAGE RankNTypes #-}
diff --git a/src/Data/List/Compat.hs b/src/Data/List/Compat.hs
--- a/src/Data/List/Compat.hs
+++ b/src/Data/List/Compat.hs
@@ -1,5 +1,8 @@
 {-# LANGUAGE CPP, NoImplicitPrelude #-}
 {-# LANGUAGE BangPatterns #-}
+#if __GLASGOW_HASKELL__ >= 702
+{-# LANGUAGE Trustworthy #-}
+#endif
 module Data.List.Compat (
   module Base
 #if !(MIN_VERSION_base(4,11,0))
diff --git a/src/Data/STRef/Compat.hs b/src/Data/STRef/Compat.hs
--- a/src/Data/STRef/Compat.hs
+++ b/src/Data/STRef/Compat.hs
@@ -1,4 +1,7 @@
 {-# LANGUAGE CPP, NoImplicitPrelude #-}
+#if __GLASGOW_HASKELL__ >= 702
+{-# LANGUAGE Trustworthy #-}
+#endif
 module Data.STRef.Compat (
   module Base
 , modifySTRef'
diff --git a/src/Data/Type/Coercion/Compat.hs b/src/Data/Type/Coercion/Compat.hs
--- a/src/Data/Type/Coercion/Compat.hs
+++ b/src/Data/Type/Coercion/Compat.hs
@@ -1,5 +1,8 @@
 {-# LANGUAGE CPP, NoImplicitPrelude #-}
 {-# LANGUAGE RankNTypes #-}
+#if __GLASGOW_HASKELL__ >= 702
+{-# LANGUAGE Trustworthy #-}
+#endif
 module Data.Type.Coercion.Compat (
 #if MIN_VERSION_base(4,7,0)
   module Base
diff --git a/src/Foreign/Compat.hs b/src/Foreign/Compat.hs
--- a/src/Foreign/Compat.hs
+++ b/src/Foreign/Compat.hs
@@ -1,4 +1,7 @@
-{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE CPP, NoImplicitPrelude #-}
+#if __GLASGOW_HASKELL__ >= 702
+{-# LANGUAGE Trustworthy #-}
+#endif
 module Foreign.Compat (
   module Base
 , module Marshal
diff --git a/src/Foreign/ForeignPtr/Compat.hs b/src/Foreign/ForeignPtr/Compat.hs
--- a/src/Foreign/ForeignPtr/Compat.hs
+++ b/src/Foreign/ForeignPtr/Compat.hs
@@ -1,5 +1,8 @@
 {-# LANGUAGE CPP, NoImplicitPrelude #-}
 {-# LANGUAGE MagicHash #-}
+#if __GLASGOW_HASKELL__ >= 702
+{-# LANGUAGE Trustworthy #-}
+#endif
 module Foreign.ForeignPtr.Compat (
   module Base
 , plusForeignPtr
diff --git a/src/Foreign/ForeignPtr/Safe/Compat.hs b/src/Foreign/ForeignPtr/Safe/Compat.hs
--- a/src/Foreign/ForeignPtr/Safe/Compat.hs
+++ b/src/Foreign/ForeignPtr/Safe/Compat.hs
@@ -1,4 +1,7 @@
 {-# LANGUAGE CPP, NoImplicitPrelude #-}
+#if __GLASGOW_HASKELL__ >= 702
+{-# LANGUAGE Trustworthy #-}
+#endif
 module Foreign.ForeignPtr.Safe.Compat (
         -- * Finalised data pointers
           ForeignPtr
diff --git a/src/Foreign/Marshal/Compat.hs b/src/Foreign/Marshal/Compat.hs
--- a/src/Foreign/Marshal/Compat.hs
+++ b/src/Foreign/Marshal/Compat.hs
@@ -1,4 +1,7 @@
 {-# LANGUAGE CPP, NoImplicitPrelude #-}
+#if __GLASGOW_HASKELL__ >= 702
+{-# LANGUAGE Trustworthy #-}
+#endif
 module Foreign.Marshal.Compat (
   module Base
 , module Alloc
diff --git a/src/Prelude/Compat.hs b/src/Prelude/Compat.hs
--- a/src/Prelude/Compat.hs
+++ b/src/Prelude/Compat.hs
@@ -1,4 +1,7 @@
 {-# LANGUAGE CPP, NoImplicitPrelude #-}
+#if __GLASGOW_HASKELL__ >= 702
+{-# LANGUAGE Trustworthy #-}
+#endif
 #if MIN_VERSION_base(4,10,0) && !(MIN_VERSION_base(4,12,0))
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE TypeInType #-}
diff --git a/src/Type/Reflection/Compat.hs b/src/Type/Reflection/Compat.hs
--- a/src/Type/Reflection/Compat.hs
+++ b/src/Type/Reflection/Compat.hs
@@ -1,4 +1,7 @@
 {-# LANGUAGE CPP, NoImplicitPrelude #-}
+#if __GLASGOW_HASKELL__ >= 702
+{-# LANGUAGE Trustworthy #-}
+#endif
 #if MIN_VERSION_base(4,10,0) && !(MIN_VERSION_base(4,11,0))
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE ScopedTypeVariables #-}
