diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.3.4
+
+- Use quantified constraints superclasses for `Eq`, `Ord`, `NFData` and
+  `Hashable Fix` instances, when available.
+
 ## 0.3.3
 
 - Drop support for GHCs prior 8.6.5
diff --git a/data-fix.cabal b/data-fix.cabal
--- a/data-fix.cabal
+++ b/data-fix.cabal
@@ -1,7 +1,7 @@
+cabal-version:   2.2
 Name:            data-fix
-Version:         0.3.3
-Cabal-Version:   >= 1.10
-License:         BSD3
+Version:         0.3.4
+License:         BSD-3-Clause
 License-file:    LICENSE
 Author:          Anton Kholomiov, Edward Kmett, Oleg Grenrus
 Maintainer:      <anton.kholomiov@gmail.com>
@@ -26,7 +26,7 @@
    || ==9.0.2
    || ==9.2.8
    || ==9.4.8
-   || ==9.6.5
+   || ==9.6.6
    || ==9.8.2
    || ==9.10.1
 
@@ -49,6 +49,6 @@
       -Wredundant-constraints -Widentities -Wmissing-export-lists
 
   build-depends:
-      base      >=4.12.0.0  && <4.21
-    , deepseq   >=1.4.4.0 && <1.6
-    , hashable  >=1.4.4.0 && <1.5
+    , base      >=4.12.0.0 && <4.21
+    , deepseq   >=1.4.4.0  && <1.6
+    , hashable  >=1.4.4.0  && <1.6
diff --git a/src/Data/Fix.hs b/src/Data/Fix.hs
--- a/src/Data/Fix.hs
+++ b/src/Data/Fix.hs
@@ -9,6 +9,7 @@
 {-# LANGUAGE UndecidableInstances      #-}
 
 #define HAS_POLY_TYPEABLE MIN_VERSION_base(4,7,0)
+#define HAS_QUANTIFIED_FUNCTOR_CLASSES MIN_VERSION_base(4,18,0)
 
 #if HAS_POLY_TYPEABLE
 {-# LANGUAGE StandaloneDeriving        #-}
@@ -97,7 +98,7 @@
 
 import Control.Monad        (liftM)
 import Data.Function        (on)
-import Data.Functor.Classes (Eq1, Ord1, Read1, Show1, compare1, eq1, readsPrec1, showsPrec1)
+import Data.Functor.Classes (Eq1, Ord1, Read1, Show1, readsPrec1, showsPrec1)
 import Data.Hashable        (Hashable (..))
 import Data.Hashable.Lifted (Hashable1, hashWithSalt1)
 import Data.Typeable        (Typeable)
@@ -114,6 +115,10 @@
 import Data.Data
 #endif
 
+#if !HAS_QUANTIFIED_FUNCTOR_CLASSES
+import Data.Functor.Classes (compare1, eq1)
+#endif
+
 -- $setup
 -- >>> :set -XDeriveFunctor
 -- >>> import Prelude
@@ -191,10 +196,24 @@
 -------------------------------------------------------------------------------
 
 instance Eq1 f => Eq (Fix f) where
+#if HAS_QUANTIFIED_FUNCTOR_CLASSES
+    Fix a == Fix b = a == b
+#else
     Fix a == Fix b = eq1 a b
+#endif
 
 instance Ord1 f => Ord (Fix f) where
+#if HAS_QUANTIFIED_FUNCTOR_CLASSES
+    compare (Fix a) (Fix b) = compare a b
+    min (Fix a) (Fix b) = Fix (min a b)
+    max (Fix a) (Fix b) = Fix (max a b)
+    Fix a >= Fix b = a >= b
+    Fix a > Fix b = a > b
+    Fix a < Fix b = a < b
+    Fix a <= Fix b = a <= b
+#else
     compare (Fix a) (Fix b) = compare1 a b
+#endif
 
 instance Show1 f => Show (Fix f) where
     showsPrec d (Fix a) =
@@ -214,11 +233,24 @@
 -------------------------------------------------------------------------------
 
 instance Hashable1 f => Hashable (Fix f) where
+#if MIN_VERSION_hashable(1,5,0)
+    hash (Fix x) = hash x
+    hashWithSalt salt (Fix x) = hashWithSalt salt x
+#else
     hashWithSalt salt = hashWithSalt1 salt . unFix
+#endif
 
+-------------------------------------------------------------------------------
+-- deepseq
+-------------------------------------------------------------------------------
+
 #if MIN_VERSION_deepseq(1,4,3)
 instance NFData1 f => NFData (Fix f) where
+#if MIN_VERSION_deepseq(1,5,0)
+    rnf (Fix a) = rnf a 
+#else
     rnf = rnf1 . unFix
+#endif
 #endif
 
 -------------------------------------------------------------------------------
