diff --git a/Control/Monad/Trans/Reader.hs b/Control/Monad/Trans/Reader.hs
index 25e3ad27c3c6c1302aa4ec1025ec3a6a380a54e7..b655c0940d76e83752f08752aecc27a9f058585f 100644
--- a/Control/Monad/Trans/Reader.hs
+++ b/Control/Monad/Trans/Reader.hs
@@ -129,7 +129,7 @@ withReaderT
     :: (r' -> r)        -- ^ The function to modify the environment.
     -> ReaderT r m a    -- ^ Computation to run in the modified environment.
     -> ReaderT r' m a
-withReaderT f m = ReaderT $ runReaderT m . f
+withReaderT f m = ReaderT $ \x -> runReaderT m $! f x
 {-# INLINE withReaderT #-}
 
 instance (Functor m) => Functor (ReaderT r m) where