diff --git a/Changelog.md b/Changelog.md
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,7 +1,7 @@
 # Changelog for `proto-lens-arbitrary`
 
-## v0.1.2.2.1
-- Bump the dependency for `QuickCheck-2.12`.
+## v0.1.2.3
+- Update to (and require) `proto-lens-0.4.*`.
 
 ## v0.1.2.2
 - Bump the lower bound on `base` to indicate we require `ghc>=8.0`.
diff --git a/proto-lens-arbitrary.cabal b/proto-lens-arbitrary.cabal
--- a/proto-lens-arbitrary.cabal
+++ b/proto-lens-arbitrary.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 2ccb1539ad8bcc2c0338c740550fdbd5054a3b91f9f4901cf90b69d5b5eb361b
+-- hash: 99e285dd3595f41e7479771c32b16b9aeb707ea0b8433459399d80dc59c30899
 
 name:           proto-lens-arbitrary
-version:        0.1.2.2.1
+version:        0.1.2.3
 synopsis:       Arbitrary instances for proto-lens.
 description:    The proto-lens-arbitrary allows generating arbitrary messages for use with QuickCheck.
 category:       Data
@@ -34,11 +34,11 @@
   hs-source-dirs:
       src
   build-depends:
-      QuickCheck >=2.8 && <2.13
-    , base >=4.9 && <4.13
+      QuickCheck >=2.8 && <2.12
+    , base >=4.9 && <4.12
     , bytestring ==0.10.*
-    , containers >=0.5 && <0.7
+    , containers ==0.5.*
     , lens-family ==1.2.*
-    , proto-lens ==0.3.*
+    , proto-lens ==0.4.*
     , text ==1.2.*
   default-language: Haskell2010
diff --git a/src/Data/ProtoLens/Arbitrary.hs b/src/Data/ProtoLens/Arbitrary.hs
--- a/src/Data/ProtoLens/Arbitrary.hs
+++ b/src/Data/ProtoLens/Arbitrary.hs
@@ -40,7 +40,7 @@
     shrink (ArbitraryMessage a) = ArbitraryMessage <$> shrinkMessage a
 
 arbitraryMessage :: Message a => Gen a
-arbitraryMessage = foldM (flip arbitraryField) def allFields
+arbitraryMessage = foldM (flip arbitraryField) defMessage allFields
 
 -- | Imitation of the (Arbitrary a => Arbitrary (Maybe a)) instance from
 -- QuickCheck.
@@ -153,7 +153,7 @@
                 Lens' entry key -> Lens' entry value -> Map key value -> [entry]
 mapToEntries keyLens valueLens m = makeEntry <$> M.toList m
   where
-    makeEntry (k, v) = (set keyLens k . set valueLens v) def
+    makeEntry (k, v) = (set keyLens k . set valueLens v) defMessage
 
 entriesToMap :: Ord key =>
                 Lens' entry key -> Lens' entry value -> [entry] -> Map key value
