diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## Ormolu 0.6.0.1
+
+* Fix false positives in AST diffing related to `UnicodeSyntax`. [PR
+  1009](https://github.com/tweag/ormolu/pull/1009).
+
 ## Ormolu 0.6.0.0
 
 * Haddocks attached to arguments of a data constructor are now formatted in
diff --git a/data/examples/declaration/data/gadt/unicode-out.hs b/data/examples/declaration/data/gadt/unicode-out.hs
new file mode 100644
--- /dev/null
+++ b/data/examples/declaration/data/gadt/unicode-out.hs
@@ -0,0 +1,4 @@
+{-# LANGUAGE UnicodeSyntax #-}
+
+data Foo :: Type -> Type where
+  Foo :: a -> Foo a
diff --git a/data/examples/declaration/data/gadt/unicode.hs b/data/examples/declaration/data/gadt/unicode.hs
new file mode 100644
--- /dev/null
+++ b/data/examples/declaration/data/gadt/unicode.hs
@@ -0,0 +1,4 @@
+{-# LANGUAGE UnicodeSyntax #-}
+
+data Foo ∷ Type → Type where
+  Foo ∷ a → Foo a
diff --git a/ormolu.cabal b/ormolu.cabal
--- a/ormolu.cabal
+++ b/ormolu.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               ormolu
-version:            0.6.0.0
+version:            0.6.0.1
 license:            BSD-3-Clause
 license-file:       LICENSE.md
 maintainer:         Mark Karpov <mark.karpov@tweag.io>
diff --git a/src/Ormolu/Diff/ParseResult.hs b/src/Ormolu/Diff/ParseResult.hs
--- a/src/Ormolu/Diff/ParseResult.hs
+++ b/src/Ormolu/Diff/ParseResult.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE DataKinds #-}
 {-# LANGUAGE DeepSubsumption #-}
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE ViewPatterns #-}
@@ -51,7 +52,7 @@
       prParsedSource = hs1
     } =
     diffCommentStream cstream0 cstream1
-      <> matchIgnoringSrcSpans hs0 hs1
+      <> diffHsModule hs0 hs1
 
 diffCommentStream :: CommentStream -> CommentStream -> ParseResultDiff
 diffCommentStream (CommentStream cs) (CommentStream cs')
@@ -60,18 +61,18 @@
   where
     commentLines = concatMap (toList . unComment . unLoc)
 
--- | Compare two values for equality disregarding the following aspects:
+-- | Compare two modules for equality disregarding the following aspects:
 --
 --     * 'SrcSpan's
 --     * ordering of import lists
---     * style (ASCII vs Unicode) of arrows
+--     * style (ASCII vs Unicode) of arrows, colons
 --     * LayoutInfo (brace style) in extension fields
 --     * Empty contexts in type classes
 --     * Parens around derived type classes
---     * 'TokenLocation' (in 'LHsUniToken')
+--     * 'TokenLocation' (in 'LHsToken'/'LHsUniToken')
 --     * 'EpaLocation'
-matchIgnoringSrcSpans :: (Data a) => a -> a -> ParseResultDiff
-matchIgnoringSrcSpans a = genericQuery a
+diffHsModule :: HsModule GhcPs -> HsModule GhcPs -> ParseResultDiff
+diffHsModule = genericQuery
   where
     genericQuery :: GenericQ (GenericQ ParseResultDiff)
     genericQuery x y
@@ -92,14 +93,17 @@
                   `extQ` considerEqual @SourceText
                   `extQ` hsDocStringEq
                   `extQ` importDeclQualifiedStyleEq
-                  `extQ` unicodeArrowStyleEq
                   `extQ` considerEqual @(LayoutInfo GhcPs)
                   `extQ` classDeclCtxEq
                   `extQ` derivedTyClsParensEq
                   `extQ` considerEqual @EpAnnComments -- ~ XCGRHSs GhcPs
-                  `extQ` considerEqual @TokenLocation
+                  `extQ` considerEqual @TokenLocation -- in LHs(Uni)Token
                   `extQ` considerEqual @EpaLocation
                   `ext2Q` forLocated
+                  -- unicode-related
+                  `extQ` considerEqual @(HsUniToken "->" "→")
+                  `extQ` considerEqual @(HsUniToken "::" "∷")
+                  `extQ` considerEqual @(HsLinearArrowTokens GhcPs)
               )
               x
               y
@@ -147,14 +151,6 @@
             else d
         UnhelpfulSpan _ -> d
     appendSpan _ d = d
-
-    -- as we normalize arrow styles (e.g. -> vs →), we consider them equal here
-    unicodeArrowStyleEq = considerEqualVia @(HsArrow GhcPs) f
-      where
-        f (HsUnrestrictedArrow _) (HsUnrestrictedArrow _) = Same
-        f (HsLinearArrow _) (HsLinearArrow _) = Same
-        f (HsExplicitMult _ _ t) (HsExplicitMult _ _ t') = genericQuery t t'
-        f _ _ = Different []
 
     classDeclCtxEq :: TyClDecl GhcPs -> GenericQ ParseResultDiff
     classDeclCtxEq ClassDecl {tcdCtxt = Just (L _ []), ..} tc' = genericQuery ClassDecl {tcdCtxt = Nothing, ..} tc'
