diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+0.13.3 [2022.01.31]
+-------------------
+* Allow building with `transformers-0.6.*` and `mtl-2.3.*`.
+
 0.13.2 [2021.11.10]
 -------------------
 * Allow building on GHC HEAD.
diff --git a/constraints.cabal b/constraints.cabal
--- a/constraints.cabal
+++ b/constraints.cabal
@@ -1,6 +1,6 @@
 name:          constraints
 category:      Constraints
-version:       0.13.2
+version:       0.13.3
 license:       BSD2
 cabal-version: >= 1.10
 license-file:  LICENSE
@@ -25,7 +25,7 @@
              , GHC == 8.6.5
              , GHC == 8.8.4
              , GHC == 8.10.7
-             , GHC == 9.0.1
+             , GHC == 9.0.2
              , GHC == 9.2.1
 extra-source-files: README.markdown
                   , CHANGELOG.markdown
@@ -56,12 +56,12 @@
     deepseq >= 1.3 && < 1.5,
     ghc-prim,
     hashable >= 1.2 && < 1.5,
-    mtl >= 2.1.2 && < 2.3,
-    transformers >= 0.3.0.0 && < 0.6,
+    mtl >= 2.1.2 && < 2.4,
+    transformers >= 0.3.0.0 && < 0.7,
     transformers-compat >= 0.5 && < 1,
     type-equality >= 1 && < 2
   if impl(ghc < 8.0)
-    build-depends: semigroups >= 0.17 && < 0.20
+    build-depends: semigroups >= 0.17 && < 0.21
 
   exposed-modules:
     Data.Constraint
diff --git a/src/Data/Constraint/Lifting.hs b/src/Data/Constraint/Lifting.hs
--- a/src/Data/Constraint/Lifting.hs
+++ b/src/Data/Constraint/Lifting.hs
@@ -8,7 +8,9 @@
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE PolyKinds #-}
+#if !(MIN_VERSION_transformers(0,6,0))
 {-# OPTIONS_GHC -fno-warn-deprecations #-}
+#endif
 module Data.Constraint.Lifting
   ( Lifting(..)
   , Lifting2(..)
@@ -25,10 +27,8 @@
 import Control.Monad.IO.Class
 import Control.Monad.RWS.Class
 import Control.Monad.Trans.Cont
-import Control.Monad.Trans.Error
 import Control.Monad.Trans.Except
 import Control.Monad.Trans.Identity
-import Control.Monad.Trans.List
 import Control.Monad.Trans.Maybe
 import Control.Monad.Trans.Reader
 import Control.Monad.Trans.RWS.Lazy as Lazy
@@ -37,6 +37,10 @@
 import Control.Monad.Trans.State.Strict as Strict
 import Control.Monad.Trans.Writer.Lazy as Lazy
 import Control.Monad.Trans.Writer.Strict as Strict
+#if !(MIN_VERSION_transformers(0,6,0))
+import Control.Monad.Trans.Error
+import Control.Monad.Trans.List
+#endif
 import Data.Binary
 import Data.Complex
 import Data.Constraint
@@ -199,22 +203,6 @@
 instance Lifting MonadFix (ReaderT e) where lifting = Sub Dict
 instance Lifting MonadIO (ReaderT e) where lifting = Sub Dict
 
-instance Lifting Functor (ErrorT e) where lifting = Sub Dict
-instance Lifting Foldable (ErrorT e) where lifting = Sub Dict
-instance Lifting Traversable (ErrorT e) where lifting = Sub Dict
-instance Error e => Lifting Monad (ErrorT e) where lifting = Sub Dict
-instance Error e => Lifting MonadFix (ErrorT e) where lifting = Sub Dict
-instance Error e => Lifting MonadPlus (ErrorT e) where lifting = Sub Dict -- overconstrained!
-instance Error e => Lifting MonadIO (ErrorT e) where lifting = Sub Dict
-instance Show e => Lifting Show1 (ErrorT e) where lifting = Sub Dict
-instance Eq e => Lifting Eq1 (ErrorT e) where lifting = Sub Dict
-instance Ord e => Lifting Ord1 (ErrorT e) where lifting = Sub Dict
-instance Read e => Lifting Read1 (ErrorT e) where lifting = Sub Dict
-instance (Show e, Show1 m) => Lifting Show (ErrorT e m) where lifting = Sub Dict
-instance (Eq e, Eq1 m) => Lifting Eq (ErrorT e m) where lifting = Sub Dict
-instance (Ord e, Ord1 m) => Lifting Ord (ErrorT e m) where lifting = Sub Dict
-instance (Read e, Read1 m) => Lifting Read (ErrorT e m) where lifting = Sub Dict
-
 instance Lifting Functor (ExceptT e) where lifting = Sub Dict
 instance Lifting Foldable (ExceptT e) where lifting = Sub Dict
 instance Lifting Traversable (ExceptT e) where lifting = Sub Dict
@@ -290,24 +278,6 @@
 instance Ord1 m => Lifting Ord (IdentityT m) where lifting = Sub Dict
 instance Eq1 m => Lifting Eq (IdentityT m) where lifting = Sub Dict
 
-instance Lifting Functor ListT where lifting = Sub Dict
-instance Lifting Applicative ListT where lifting = Sub Dict
-instance Lifting Alternative ListT where lifting = Sub Dict -- overconstrained
-instance Lifting Monad ListT where lifting = Sub Dict
--- instance Lifting MonadFix ListT where lifting = Sub Dict
-instance Lifting MonadPlus ListT where lifting = Sub Dict -- overconstrained
-instance Lifting Foldable ListT where lifting = Sub Dict
-instance Lifting Traversable ListT where lifting = Sub Dict
-instance Lifting MonadIO ListT where lifting = Sub Dict
-instance Lifting Show1 ListT where lifting = Sub Dict
-instance Lifting Read1 ListT where lifting = Sub Dict
-instance Lifting Ord1 ListT where lifting = Sub Dict
-instance Lifting Eq1 ListT where lifting = Sub Dict
-instance Show1 m => Lifting Show (ListT m) where lifting = Sub Dict
-instance Read1 m => Lifting Read (ListT m) where lifting = Sub Dict
-instance Ord1 m => Lifting Ord (ListT m) where lifting = Sub Dict
-instance Eq1 m => Lifting Eq (ListT m) where lifting = Sub Dict
-
 instance Lifting Functor MaybeT where lifting = Sub Dict
 instance Lifting Monad MaybeT where lifting = Sub Dict
 -- instance Lifting MonadFix MaybeT where lifting = Sub Dict
@@ -372,11 +342,9 @@
 instance Lifting Read Identity where lifting = Sub Dict
 
 instance Lifting MonadCont MaybeT where lifting = Sub Dict
-instance Lifting MonadCont ListT where lifting = Sub Dict
 instance Lifting MonadCont IdentityT where lifting = Sub Dict
 instance Monoid w => Lifting MonadCont (Strict.WriterT w) where lifting = Sub Dict
 instance Monoid w => Lifting MonadCont (Lazy.WriterT w) where lifting = Sub Dict
-instance Error e => Lifting MonadCont (ErrorT e) where lifting = Sub Dict
 instance Lifting MonadCont (ExceptT w) where lifting = Sub Dict
 instance Lifting MonadCont (Strict.StateT s) where lifting = Sub Dict
 instance Lifting MonadCont (Lazy.StateT s) where lifting = Sub Dict
@@ -385,7 +353,6 @@
 instance Monoid w => Lifting MonadCont (Lazy.RWST r w s) where lifting = Sub Dict
 
 instance Lifting (MonadError e) MaybeT where lifting = Sub Dict
-instance Lifting (MonadError e) ListT where lifting = Sub Dict
 instance Lifting (MonadError e) IdentityT where lifting = Sub Dict
 instance Monoid w => Lifting (MonadError e) (Strict.WriterT w) where lifting = Sub Dict
 instance Monoid w => Lifting (MonadError e) (Lazy.WriterT w) where lifting = Sub Dict
@@ -397,29 +364,68 @@
 
 instance Lifting (MonadRWS r w s) MaybeT where lifting = Sub Dict
 instance Lifting (MonadRWS r w s) IdentityT where lifting = Sub Dict
-instance Error e => Lifting (MonadRWS r w s) (ErrorT e) where lifting = Sub Dict
 instance Lifting (MonadRWS r w s) (ExceptT e) where lifting = Sub Dict
 
 instance Lifting (MonadReader r) MaybeT where lifting = Sub Dict
-instance Lifting (MonadReader r) ListT where lifting = Sub Dict
 instance Lifting (MonadReader r) IdentityT where lifting = Sub Dict
 instance Monoid w => Lifting (MonadReader r) (Strict.WriterT w) where lifting = Sub Dict
 instance Monoid w => Lifting (MonadReader r) (Lazy.WriterT w) where lifting = Sub Dict
 instance Lifting (MonadReader r) (Strict.StateT s) where lifting = Sub Dict
 instance Lifting (MonadReader r) (Lazy.StateT s) where lifting = Sub Dict
 instance Lifting (MonadReader r) (ExceptT e) where lifting = Sub Dict
-instance Error e => Lifting (MonadReader r) (ErrorT e) where lifting = Sub Dict
 instance Lifting (MonadReader r) (ContT r') where lifting = Sub Dict
 
 instance Lifting (MonadState s) MaybeT where lifting = Sub Dict
-instance Lifting (MonadState s) ListT where lifting = Sub Dict
 instance Lifting (MonadState s) IdentityT where lifting = Sub Dict
 instance Monoid w => Lifting (MonadState s) (Strict.WriterT w) where lifting = Sub Dict
 instance Monoid w => Lifting (MonadState s) (Lazy.WriterT w) where lifting = Sub Dict
 instance Lifting (MonadState s) (ReaderT r) where lifting = Sub Dict
 instance Lifting (MonadState s) (ExceptT e) where lifting = Sub Dict
-instance Error e => Lifting (MonadState s) (ErrorT e) where lifting = Sub Dict
 instance Lifting (MonadState s) (ContT r') where lifting = Sub Dict
+
+#if !(MIN_VERSION_transformers(0,6,0))
+instance Lifting Functor (ErrorT e) where lifting = Sub Dict
+instance Lifting Foldable (ErrorT e) where lifting = Sub Dict
+instance Lifting Traversable (ErrorT e) where lifting = Sub Dict
+instance Error e => Lifting Monad (ErrorT e) where lifting = Sub Dict
+instance Error e => Lifting MonadFix (ErrorT e) where lifting = Sub Dict
+instance Error e => Lifting MonadPlus (ErrorT e) where lifting = Sub Dict -- overconstrained!
+instance Error e => Lifting MonadIO (ErrorT e) where lifting = Sub Dict
+instance Show e => Lifting Show1 (ErrorT e) where lifting = Sub Dict
+instance Eq e => Lifting Eq1 (ErrorT e) where lifting = Sub Dict
+instance Ord e => Lifting Ord1 (ErrorT e) where lifting = Sub Dict
+instance Read e => Lifting Read1 (ErrorT e) where lifting = Sub Dict
+instance (Show e, Show1 m) => Lifting Show (ErrorT e m) where lifting = Sub Dict
+instance (Eq e, Eq1 m) => Lifting Eq (ErrorT e m) where lifting = Sub Dict
+instance (Ord e, Ord1 m) => Lifting Ord (ErrorT e m) where lifting = Sub Dict
+instance (Read e, Read1 m) => Lifting Read (ErrorT e m) where lifting = Sub Dict
+instance Error e => Lifting MonadCont (ErrorT e) where lifting = Sub Dict
+instance Error e => Lifting (MonadRWS r w s) (ErrorT e) where lifting = Sub Dict
+instance Error e => Lifting (MonadReader r) (ErrorT e) where lifting = Sub Dict
+instance Error e => Lifting (MonadState s) (ErrorT e) where lifting = Sub Dict
+
+instance Lifting Functor ListT where lifting = Sub Dict
+instance Lifting Applicative ListT where lifting = Sub Dict
+instance Lifting Alternative ListT where lifting = Sub Dict -- overconstrained
+instance Lifting Monad ListT where lifting = Sub Dict
+-- instance Lifting MonadFix ListT where lifting = Sub Dict
+instance Lifting MonadPlus ListT where lifting = Sub Dict -- overconstrained
+instance Lifting Foldable ListT where lifting = Sub Dict
+instance Lifting Traversable ListT where lifting = Sub Dict
+instance Lifting MonadIO ListT where lifting = Sub Dict
+instance Lifting Show1 ListT where lifting = Sub Dict
+instance Lifting Read1 ListT where lifting = Sub Dict
+instance Lifting Ord1 ListT where lifting = Sub Dict
+instance Lifting Eq1 ListT where lifting = Sub Dict
+instance Show1 m => Lifting Show (ListT m) where lifting = Sub Dict
+instance Read1 m => Lifting Read (ListT m) where lifting = Sub Dict
+instance Ord1 m => Lifting Ord (ListT m) where lifting = Sub Dict
+instance Eq1 m => Lifting Eq (ListT m) where lifting = Sub Dict
+instance Lifting MonadCont ListT where lifting = Sub Dict
+instance Lifting (MonadError e) ListT where lifting = Sub Dict
+instance Lifting (MonadReader r) ListT where lifting = Sub Dict
+instance Lifting (MonadState s) ListT where lifting = Sub Dict
+#endif
 
 class Lifting2 p f where
   lifting2 :: p a :- Lifting p (f a) -- (p a, p b) :- p (f a b)
