diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for deriving-trans
 
+## 0.3.1.0 *08 Feb 2022*
+
+* Add `MonadFix` instance to `Elevator`.
+
 ## 0.3.0.0 *04 Feb 2022*
 
 * Add "base-case" instances for both lazy and strict transformers (from mtl) to `ComposeT`.
diff --git a/deriving-trans.cabal b/deriving-trans.cabal
--- a/deriving-trans.cabal
+++ b/deriving-trans.cabal
@@ -1,6 +1,6 @@
 cabal-version:       3.0
 name:                deriving-trans
-version:             0.3.0.0
+version:             0.3.1.0
 synopsis:            Derive instances for monad transformer stacks
 description:         Implementing instances for monad transformer stacks can be tedious.
                      <https://hackage.haskell.org/package/mtl mtl> defines each instance for each
diff --git a/src/Control/Monad/Trans/Compose.hs b/src/Control/Monad/Trans/Compose.hs
--- a/src/Control/Monad/Trans/Compose.hs
+++ b/src/Control/Monad/Trans/Compose.hs
@@ -289,7 +289,7 @@
 --
 -- @
 -- deriving via 'Elevator' t1 (t2 (m :: * -> *))
---   instance {-# OVERLAPPABLE #-}
+--   instance {-\# OVERLAPPABLE \#-}
 --     ( 'Monad' (t1 (t2 m))
 --     , 'MonadTransControl' t1
 --     , MonadCustom (t2 m)
diff --git a/src/Control/Monad/Trans/Elevator.hs b/src/Control/Monad/Trans/Elevator.hs
--- a/src/Control/Monad/Trans/Elevator.hs
+++ b/src/Control/Monad/Trans/Elevator.hs
@@ -7,6 +7,7 @@
 import Control.Monad.Base
 import Control.Monad.Cont.Class
 import Control.Monad.Error.Class
+import Control.Monad.Fix
 import Control.Monad.Reader.Class
 import Control.Monad.RWS.Class (MonadRWS)
 import Control.Monad.State.Class
@@ -54,6 +55,10 @@
 
 instance (Monad (t m), MonadTrans t, MonadFail m) => MonadFail (Elevator t m) where
   fail = lift . fail
+
+instance (Monad (t m), MonadTransControl t, MonadFix m) => MonadFix (Elevator t m) where
+  mfix f = (restoreT . pure =<<) $ liftWith $ \ runT ->
+    mfix $ \ x -> runT $ (f =<<) $ restoreT $ pure x
 
 instance (Monad (t m), MonadTrans t, MonadIO m) => MonadIO (Elevator t m) where
   liftIO = lift . liftIO
