diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,17 @@
 Changelog
 =========
 
+Version 0.2.4.0
+---------------
+
+*December 15, 2023*
+
+<https://github.com/mstksg/conduino/releases/tag/v0.2.4.0>
+
+*   Remove the "morally incorrect" `MonadTrans` instance for `ZipSource` and
+    `ZipSink`, and replace them with `liftZipSource` and `liftZipSink`.  This
+    also adds compatibility with *transformers-0.6*.
+
 Version 0.2.3.0
 ---------------
 
diff --git a/conduino.cabal b/conduino.cabal
--- a/conduino.cabal
+++ b/conduino.cabal
@@ -7,7 +7,7 @@
 -- hash: 94a4f8415936756af3ddab6ae4a237db4a3f8ee9d4b93ce27fe211cceca6761b
 
 name:           conduino
-version:        0.2.3.0
+version:        0.2.4.0
 synopsis:       Lightweight composable continuation-based stream processors
 description:    A lightweight continuation-based stream processing library.
                 .
diff --git a/src/Data/Conduino.hs b/src/Data/Conduino.hs
--- a/src/Data/Conduino.hs
+++ b/src/Data/Conduino.hs
@@ -1,12 +1,13 @@
+{-# LANGUAGE DataKinds                  #-}
 {-# LANGUAGE DeriveFunctor              #-}
 {-# LANGUAGE FlexibleContexts           #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE LambdaCase                 #-}
 {-# LANGUAGE PatternSynonyms            #-}
+{-# LANGUAGE PolyKinds                  #-}
 {-# LANGUAGE RankNTypes                 #-}
 {-# LANGUAGE ScopedTypeVariables        #-}
 {-# LANGUAGE TupleSections              #-}
-{-# LANGUAGE TypeInType                 #-}
 {-# LANGUAGE ViewPatterns               #-}
 
 -- |
@@ -78,9 +79,9 @@
   -- * Wrappers
   , ZipSource(..)
   , unconsZipSource
-  , zipSource
+  , zipSource, liftZipSource
   , ZipSink(..)
-  , zipSink, altSink
+  , zipSink, liftZipSink, altSink
   -- * Generators
   , toListT, fromListT
   , pattern PipeList
@@ -92,7 +93,6 @@
 import           Control.Monad.Trans.Class
 import           Control.Monad.Trans.Free         (FreeT(..), FreeF(..))
 import           Control.Monad.Trans.Free.Church
-import           Control.Monad.Trans.State
 import           Data.Bifunctor
 import           Data.Conduino.Internal
 import           Data.Functor
@@ -524,8 +524,13 @@
     empty = ZipSource $ pure ()
     ZipSource p <|> ZipSource q = ZipSource (p *> q)
 
-instance MonadTrans ZipSource where
-    lift = ZipSource . (yield =<<) . lift
+-- | Lift an action into a 'ZipSource'.  Note that this replaces the previous
+-- "morally incorrect" 'MonadTrans' instance for 'ZipSource'.
+--
+-- @since 0.2.4.0
+liftZipSource :: Monad m => m a -> ZipSource m a
+liftZipSource = ZipSource . (yield =<<) . lift
+{-# INLINE liftZipSource #-}
 
 -- | A source is essentially equivalent to 'ListT' producing a 'Maybe'
 -- result.  This converts it to the 'ListT' it encodes.
@@ -681,5 +686,10 @@
         go = forever await
     ZipSink p <|> ZipSink q = ZipSink $ altSink p q
 
-instance MonadTrans (ZipSink i u) where
-    lift = ZipSink . lift
+-- | Lift an action into a 'ZipSource'.  Note that this replaces the previous
+-- "morally incorrect" 'MonadTrans' instance for 'ZipSource'.
+--
+-- @since 0.2.4.0
+liftZipSink :: Monad m => m a -> ZipSink i u m a
+liftZipSink = ZipSink . lift
+{-# INLINE liftZipSink #-}
diff --git a/src/Data/Conduino/Internal.hs b/src/Data/Conduino/Internal.hs
--- a/src/Data/Conduino/Internal.hs
+++ b/src/Data/Conduino/Internal.hs
@@ -1,12 +1,13 @@
 {-# LANGUAGE CPP                        #-}
+{-# LANGUAGE DataKinds                  #-}
 {-# LANGUAGE DeriveFunctor              #-}
 {-# LANGUAGE FlexibleContexts           #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE LambdaCase                 #-}
+{-# LANGUAGE PolyKinds                  #-}
 {-# LANGUAGE RankNTypes                 #-}
 {-# LANGUAGE ScopedTypeVariables        #-}
 {-# LANGUAGE TemplateHaskell            #-}
-{-# LANGUAGE TypeInType                 #-}
 {-# LANGUAGE TypeOperators              #-}
 {-# OPTIONS_HADDOCK not-home            #-}
 
@@ -50,6 +51,10 @@
 
 #if !MIN_VERSION_base(4,13,0)
 import           Control.Monad.Fail
+#endif
+
+#if MIN_VERSION_base(4,18,0)
+import           Control.Monad (MonadPlus)
 #endif
 
 -- | Base functor of 'Pipe'.
