diff --git a/QuickCheck.cabal b/QuickCheck.cabal
--- a/QuickCheck.cabal
+++ b/QuickCheck.cabal
@@ -1,5 +1,5 @@
 Name: QuickCheck
-Version: 2.7.2
+Version: 2.7.3
 Cabal-Version: >= 1.8
 Build-type: Simple
 License: BSD3
@@ -34,7 +34,7 @@
 source-repository this
   type:     git
   location: https://github.com/nick8325/quickcheck
-  tag:      2.7.2
+  tag:      2.7.3
 
 flag base3
   Description: Choose the new smaller, split-up base package.
@@ -101,6 +101,10 @@
   if impl(ghc >= 7.2) && impl(ghc < 7.6)
     Build-depends: ghc-prim
 
+  -- Safe Haskell appeared in GHC 7.2, but GHC.Generics isn't safe until 7.4.
+  if impl (ghc < 7.4)
+    cpp-options: -DNO_SAFE_HASKELL
+
   -- Use tf-random on newer GHCs.
   if impl(ghc >= 7) && flag(base4)
     Build-depends: tf-random >= 0.4
@@ -111,7 +115,7 @@
   if !impl(ghc)
     -- If your Haskell compiler can cope without some of these, please
     -- send a message to the QuickCheck mailing list!
-    cpp-options: -DNO_TIMEOUT -DNO_NEWTYPE_DERIVING -DNO_GENERICS -DNO_TEMPLATE_HASKELL
+    cpp-options: -DNO_TIMEOUT -DNO_NEWTYPE_DERIVING -DNO_GENERICS -DNO_TEMPLATE_HASKELL -DNO_SAFE_HASKELL
     if !impl(hugs) && !impl(uhc)
       cpp-options: -DNO_ST_MONAD -DNO_MULTI_PARAM_TYPE_CLASSES
 
@@ -133,6 +137,6 @@
     main-is: Heap.hs
     build-depends:
       base,
-      QuickCheck == 2.7.2,
+      QuickCheck == 2.7.3,
       template-haskell >= 2.4,
       test-framework >= 0.4 && < 0.9
diff --git a/Test/QuickCheck.hs b/Test/QuickCheck.hs
--- a/Test/QuickCheck.hs
+++ b/Test/QuickCheck.hs
@@ -1,4 +1,7 @@
 {-# LANGUAGE CPP #-}
+#ifndef NO_SAFE_HASKELL
+{-# LANGUAGE Safe #-}
+#endif
 module Test.QuickCheck
   (
     -- * Running tests
diff --git a/Test/QuickCheck/All.hs b/Test/QuickCheck/All.hs
--- a/Test/QuickCheck/All.hs
+++ b/Test/QuickCheck/All.hs
@@ -1,4 +1,7 @@
-{-# LANGUAGE TemplateHaskell, Rank2Types #-}
+{-# LANGUAGE TemplateHaskell, Rank2Types, CPP #-}
+#ifndef NO_SAFE_HASKELL
+{-# LANGUAGE Trustworthy #-}
+#endif
 -- | Test all properties in the current module, using Template Haskell.
 -- You need to have a @{-\# LANGUAGE TemplateHaskell \#-}@ pragma in
 -- your module for any of these to work.
diff --git a/Test/QuickCheck/Modifiers.hs b/Test/QuickCheck/Modifiers.hs
--- a/Test/QuickCheck/Modifiers.hs
+++ b/Test/QuickCheck/Modifiers.hs
@@ -1,4 +1,7 @@
 {-# LANGUAGE CPP #-}
+#ifndef NO_SAFE_HASKELL
+{-# LANGUAGE Trustworthy #-}
+#endif
 #ifndef NO_MULTI_PARAM_TYPE_CLASSES
 {-# LANGUAGE MultiParamTypeClasses #-}
 #endif
diff --git a/Test/QuickCheck/Property.hs b/Test/QuickCheck/Property.hs
--- a/Test/QuickCheck/Property.hs
+++ b/Test/QuickCheck/Property.hs
@@ -1,5 +1,8 @@
 -- | Combinators for constructing properties.
 {-# LANGUAGE CPP #-}
+#ifndef NO_SAFE_HASKELL
+{-# LANGUAGE Safe #-}
+#endif
 module Test.QuickCheck.Property where
 
 --------------------------------------------------------------------------
diff --git a/Test/QuickCheck/Random.hs b/Test/QuickCheck/Random.hs
--- a/Test/QuickCheck/Random.hs
+++ b/Test/QuickCheck/Random.hs
@@ -1,5 +1,8 @@
 -- | A wrapper around the system random number generator. Internal QuickCheck module.
 {-# LANGUAGE CPP #-}
+#ifndef NO_SAFE_HASKELL
+{-# LANGUAGE Trustworthy #-}
+#endif
 module Test.QuickCheck.Random where
 
 #ifndef NO_TF_RANDOM
diff --git a/Test/QuickCheck/Test.hs b/Test/QuickCheck/Test.hs
--- a/Test/QuickCheck/Test.hs
+++ b/Test/QuickCheck/Test.hs
@@ -1,4 +1,8 @@
 -- | The main test loop.
+{-# LANGUAGE CPP #-}
+#ifndef NO_SAFE_HASKELL
+{-# LANGUAGE Safe #-}
+#endif
 module Test.QuickCheck.Test where
 
 --------------------------------------------------------------------------
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+QuickCheck 2.7.3 (released 2014-03-24)
+	* Add annotations for Safe Haskell.
+
 QuickCheck 2.7.2 (released 2014-03-22)
 	* Fix bug in cabal file which broke cabal test
 
