diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+0.3.4 [2021.02.21]
+------------------
+* Fix the build with `safecopy-0.10.4` or later.
+
 0.3.3 [2021.02.17]
 ------------------
 * Allow building with `lens-5.*`.
diff --git a/approximate.cabal b/approximate.cabal
--- a/approximate.cabal
+++ b/approximate.cabal
@@ -1,6 +1,6 @@
 name:          approximate
 category:      Numeric
-version:       0.3.3
+version:       0.3.4
 license:       BSD3
 cabal-version: >= 1.10
 license-file:  LICENSE
diff --git a/src/Data/Approximate/Mass.hs b/src/Data/Approximate/Mass.hs
--- a/src/Data/Approximate/Mass.hs
+++ b/src/Data/Approximate/Mass.hs
@@ -84,7 +84,7 @@
   put (Mass p a) = Serialize.put p >> Serialize.put a
   get = Mass <$> Serialize.get <*> Serialize.get
 
-instance Serialize a => SafeCopy (Mass a) where
+instance (Serialize a, Typeable a) => SafeCopy (Mass a) where
   -- safecopy-0.10.0 changed its default implementations for these methods.
   -- The implementations below are copied from the pre-0.10.0 defaults.
   errorTypeName _ = "<unknown type>"
diff --git a/src/Data/Approximate/Type.hs b/src/Data/Approximate/Type.hs
--- a/src/Data/Approximate/Type.hs
+++ b/src/Data/Approximate/Type.hs
@@ -65,7 +65,7 @@
   put (Approximate p l m h) = Serialize.put p >> Serialize.put l >> Serialize.put m >> Serialize.put h
   get = Approximate <$> Serialize.get <*> Serialize.get <*> Serialize.get <*> Serialize.get
 
-instance Serialize a => SafeCopy (Approximate a) where
+instance (Serialize a, Typeable a) => SafeCopy (Approximate a) where
   -- safecopy-0.10.0 changed its default implementations for these methods.
   -- The implementations below are copied from the pre-0.10.0 defaults.
   errorTypeName _ = "<unknown type>"
