diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.4.1
+
+- Fix build with semialign-1.3
+
 ## 0.4
 
 - Drop `ansi-wl-pprint` dependency, use `prettyprinter` directly.
diff --git a/src/Data/TreeDiff/OMap.hs b/src/Data/TreeDiff/OMap.hs
--- a/src/Data/TreeDiff/OMap.hs
+++ b/src/Data/TreeDiff/OMap.hs
@@ -14,10 +14,12 @@
     elems,
 ) where
 
+import Prelude hiding (zipWith)
+
 import Control.DeepSeq (NFData (..))
 import Data.List       (sortBy)
 import Data.Ord        (comparing)
-import Data.Semialign  (Semialign(..), Unzip (..), unzipDefault)
+import Data.Semialign  (Semialign(..), Unzip (..), Zip (..), unzipDefault)
 import Data.These      (These (..))
 
 import qualified Data.Map.Strict as Map
@@ -149,5 +151,10 @@
         g (That (Val j y))            = Val j (f (That y))
         g (These (Val i x) (Val j y)) = Val (min i j) (f (These x y))
 
-instance Unzip (OMap k) where
+instance Ord k => Zip (OMap k) where
+    zipWith f (OMap xs) (OMap ys) = OMap (zipWith g xs ys) where
+        g (Val i x) (Val j y) = Val (min i j) (f x y)
+
+-- Ord k is required for semialign <1.4
+instance Ord k => Unzip (OMap k) where
     unzip = unzipDefault
diff --git a/tree-diff.cabal b/tree-diff.cabal
--- a/tree-diff.cabal
+++ b/tree-diff.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.2
 name:               tree-diff
-version:            0.4
+version:            0.4.1
 synopsis:           Diffing of (expression) trees.
 category:           Data, Testing
 description:
