diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,16 @@
 # Changelog
 
+- 0.8.9.0 (2023-06-27)
+    * Apply block quote theming to entire block (#119) (#111)
+    * Fix table header theming (#128)
+    * Dependency updates:
+        - `aeson` to 2.1
+        - `optparse-applicative` to 0.18
+        - `pandoc` to 3.1
+        - `pandoc-types` to 1.23
+        - `text` to 2.0
+        - `time` to 1.12
+
 - 0.8.8.0 (2022-10-26)
     * Allow hiding slide number (contribution by Paweł Dybiec)
     * Support additional markdown extensions (contribution by Spreadcat)
diff --git a/lib/Patat/Main.hs b/lib/Patat/Main.hs
--- a/lib/Patat/Main.hs
+++ b/lib/Patat/Main.hs
@@ -8,30 +8,30 @@
 
 
 --------------------------------------------------------------------------------
-import           Control.Concurrent           (forkIO, killThread, threadDelay)
-import           Control.Concurrent.Chan      (Chan)
-import qualified Control.Concurrent.Chan      as Chan
-import           Control.Exception            (bracket)
-import           Control.Monad                (forever, unless, when)
-import qualified Data.Aeson.Extended          as A
-import           Data.Functor                 (($>))
-import qualified Data.Text                    as T
-import           Data.Time                    (UTCTime)
-import           Data.Version                 (showVersion)
-import qualified Options.Applicative          as OA
+import           Control.Concurrent              (forkIO, killThread,
+                                                  threadDelay)
+import           Control.Concurrent.Chan         (Chan)
+import qualified Control.Concurrent.Chan         as Chan
+import           Control.Exception               (bracket)
+import           Control.Monad                   (forever, unless, when)
+import qualified Data.Aeson.Extended             as A
+import           Data.Functor                    (($>))
+import           Data.Time                       (UTCTime)
+import           Data.Version                    (showVersion)
+import qualified Options.Applicative             as OA
+import qualified Options.Applicative.Help.Pretty as OA.PP
 import           Patat.AutoAdvance
-import qualified Patat.Images                 as Images
+import qualified Patat.Images                    as Images
 import           Patat.Presentation
-import qualified Patat.PrettyPrint            as PP
+import qualified Patat.PrettyPrint               as PP
 import qualified Paths_patat
 import           Prelude
-import qualified System.Console.ANSI          as Ansi
-import           System.Directory             (doesFileExist,
-                                               getModificationTime)
-import           System.Exit                  (exitFailure, exitSuccess)
-import qualified System.IO                    as IO
-import qualified Text.Pandoc                  as Pandoc
-import qualified Text.PrettyPrint.ANSI.Leijen as PPL
+import qualified System.Console.ANSI             as Ansi
+import           System.Directory                (doesFileExist,
+                                                  getModificationTime)
+import           System.Exit                     (exitFailure, exitSuccess)
+import qualified System.IO                       as IO
+import qualified Text.Pandoc                     as Pandoc
 
 
 --------------------------------------------------------------------------------
@@ -77,7 +77,7 @@
     OA.header ("patat v" <> showVersion Paths_patat.version) <>
     OA.progDescDoc (Just desc)
   where
-    desc = PPL.vcat
+    desc = OA.PP.vcat
         [ "Terminal-based presentations using Pandoc"
         , ""
         , "Controls:"
@@ -121,8 +121,8 @@
     options <- OA.customExecParser parserPrefs parserInfo
 
     when (oVersion options) $ do
-        putStrLn (showVersion Paths_patat.version)
-        putStrLn $ "Using pandoc: " ++ T.unpack Pandoc.pandocVersion
+        putStrLn $ showVersion Paths_patat.version
+        putStrLn $ "Using pandoc: " ++ showVersion Pandoc.pandocVersion
         exitSuccess
 
     filePath <- case oFilePath options of
diff --git a/lib/Patat/Presentation/Display.hs b/lib/Patat/Presentation/Display.hs
--- a/lib/Patat/Presentation/Display.hs
+++ b/lib/Patat/Presentation/Display.hs
@@ -1,5 +1,4 @@
 --------------------------------------------------------------------------------
-{-# LANGUAGE CPP               #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards   #-}
 module Patat.Presentation.Display
@@ -133,17 +132,13 @@
             PP.indent spaces spaces pblock
 
   where
-    -- Check if the fragment consists of just a single image, or a header and
-    -- some image.
-    onlyImage (Fragment blocks)
-            | [Pandoc.Para para] <- filter isVisibleBlock blocks
-            , [Pandoc.Image _ _ (target, _)] <- para =
-        Just target
-    onlyImage (Fragment blocks)
-            | [Pandoc.Header _ _ _, Pandoc.Para para] <- filter isVisibleBlock blocks
-            , [Pandoc.Image _ _ (target, _)] <- para =
-        Just target
-    onlyImage _ = Nothing
+    -- Check if the fragment consists of "just a single image".  Discard
+    -- headers.
+    onlyImage (Fragment (Pandoc.Header{} : bs)) = onlyImage (Fragment bs)
+    onlyImage (Fragment bs) = case filter isVisibleBlock bs of
+        [Pandoc.Figure _ _ bs'] -> onlyImage (Fragment bs')
+        [Pandoc.Para [Pandoc.Image _ _ (target, _)]] -> Just target
+        _ -> Nothing
 
 
 --------------------------------------------------------------------------------
@@ -170,7 +165,7 @@
         j <- [0 .. numFragments slide - 1]
         case displayPresentation size pres {pActiveFragment = (i, j)} of
             DisplayDoc doc -> [doc]
-            DisplayImage _ -> []
+            DisplayImage filepath -> [PP.string $ "image:" ++ filepath]
 
 
 --------------------------------------------------------------------------------
@@ -248,7 +243,7 @@
 
 prettyBlock theme@Theme {..} (Pandoc.BlockQuote bs) =
     let quote = PP.NotTrimmable (themed themeBlockQuote "> ") in
-    PP.indent quote quote (prettyBlocks theme bs)
+    PP.indent quote quote (themed themeBlockQuote $ prettyBlocks theme bs)
 
 prettyBlock theme@Theme {..} (Pandoc.DefinitionList terms) =
     PP.vcat $ map prettyDefinition terms
@@ -282,18 +277,15 @@
 
 prettyBlock theme (Pandoc.Div _attrs blocks) = prettyBlocks theme blocks
 
-prettyBlock _theme Pandoc.Null = mempty
-
-#if MIN_VERSION_pandoc(1,18,0)
--- 'LineBlock' elements are new in pandoc-1.18
 prettyBlock theme@Theme {..} (Pandoc.LineBlock inliness) =
     let ind = PP.NotTrimmable (themed themeLineBlock "| ") in
     PP.wrapAt Nothing $
     PP.indent ind ind $
     PP.vcat $
     map (prettyInlines theme) inliness
-#endif
 
+prettyBlock theme (Pandoc.Figure _attr _caption blocks) =
+    prettyBlocks theme blocks
 
 --------------------------------------------------------------------------------
 prettyBlocks :: Theme -> [Pandoc.Block] -> PP.Doc
@@ -394,7 +386,6 @@
 
 --------------------------------------------------------------------------------
 isVisibleBlock :: Pandoc.Block -> Bool
-isVisibleBlock Pandoc.Null = False
 isVisibleBlock (Pandoc.RawBlock (Pandoc.Format "html") t) =
     not ("<!--" `T.isPrefixOf` t && "-->" `T.isSuffixOf` t)
 isVisibleBlock _ = True
diff --git a/lib/Patat/Presentation/Fragment.hs b/lib/Patat/Presentation/Fragment.hs
--- a/lib/Patat/Presentation/Fragment.hs
+++ b/lib/Patat/Presentation/Fragment.hs
@@ -66,8 +66,8 @@
 fragmentBlock _ block@(Pandoc.Table {})          = [Append [block]]
 fragmentBlock _ block@(Pandoc.Div {})            = [Append [block]]
 fragmentBlock _ block@Pandoc.HorizontalRule      = [Append [block]]
-fragmentBlock _ block@Pandoc.Null                = [Append [block]]
 fragmentBlock _ block@(Pandoc.LineBlock {})      = [Append [block]]
+fragmentBlock _ block@(Pandoc.Figure {})         = [Append [block]]
 
 fragmentList
     :: FragmentSettings                    -- ^ Global settings
diff --git a/lib/Patat/Presentation/Internal.hs b/lib/Patat/Presentation/Internal.hs
--- a/lib/Patat/Presentation/Internal.hs
+++ b/lib/Patat/Presentation/Internal.hs
@@ -188,10 +188,12 @@
                 Nothing -> fail $
                     "Unknown extension: " ++ show txt ++
                     ", known extensions are: " ++
-                    intercalate ", "
-                        [ show (drop 4 (show e))
-                        | e <- [minBound .. maxBound] :: [Pandoc.Extension]
-                        ]
+                    intercalate ", " (map (drop 4 . show) allExts)
+          where
+            -- This is an approximation since we can't enumerate extensions
+            -- anymore in the latest pandoc...
+            allExts = Pandoc.extensionsToList $
+                Pandoc.getAllExtensions "markdown"
 
 
 --------------------------------------------------------------------------------
diff --git a/lib/Patat/PrettyPrint.hs b/lib/Patat/PrettyPrint.hs
--- a/lib/Patat/PrettyPrint.hs
+++ b/lib/Patat/PrettyPrint.hs
@@ -144,9 +144,9 @@
 
 --------------------------------------------------------------------------------
 chunkToDocE :: Chunk -> DocE Doc
-chunkToDocE NewlineChunk            = Hardline
-chunkToDocE (StringChunk codes str) = Ansi (\_ -> codes) (Doc [String str])
-chunkToDocE (ControlChunk ctrl)     = Control ctrl
+chunkToDocE NewlineChunk         = Hardline
+chunkToDocE (StringChunk c1 str) = Ansi (\c0 -> c1 ++ c0) (Doc [String str])
+chunkToDocE (ControlChunk ctrl)  = Control ctrl
 
 
 --------------------------------------------------------------------------------
diff --git a/lib/Patat/Theme.hs b/lib/Patat/Theme.hs
--- a/lib/Patat/Theme.hs
+++ b/lib/Patat/Theme.hs
@@ -113,7 +113,7 @@
     , themeBlockQuote         = dull Ansi.Green
     , themeDefinitionTerm     = dull Ansi.Blue
     , themeDefinitionList     = dull Ansi.Magenta
-    , themeTableHeader        = dull Ansi.Blue
+    , themeTableHeader        = dull Ansi.Magenta `mappend` bold
     , themeTableSeparator     = dull Ansi.Magenta
     , themeLineBlock          = dull Ansi.Magenta
     , themeEmph               = dull Ansi.Green
diff --git a/patat.cabal b/patat.cabal
--- a/patat.cabal
+++ b/patat.cabal
@@ -1,5 +1,5 @@
 Name:                patat
-Version:             0.8.8.0
+Version:             0.8.9.0
 Synopsis:            Terminal-based presentations using Pandoc
 Description:         Terminal-based presentations using Pandoc.
 License:             GPL-2
@@ -31,7 +31,7 @@
   Default-language:  Haskell2010
 
   Build-depends:
-    aeson                >= 2.0  && < 2.1,
+    aeson                >= 2.0  && < 2.2,
     ansi-terminal        >= 0.6  && < 0.12,
     ansi-wl-pprint       >= 0.6  && < 0.7,
     async                >= 2.2  && < 2.3,
@@ -43,14 +43,14 @@
     directory            >= 1.2  && < 1.4,
     filepath             >= 1.4  && < 1.5,
     mtl                  >= 2.2  && < 2.3,
-    optparse-applicative >= 0.16 && < 0.17,
-    pandoc               >= 2.11 && < 2.20,
-    pandoc-types         >= 1.22 && < 1.23,
+    optparse-applicative >= 0.16 && < 0.19,
+    pandoc               >= 3.1  && < 3.2,
+    pandoc-types         >= 1.23 && < 1.24,
     process              >= 1.6  && < 1.7,
     skylighting          >= 0.10 && < 0.14,
     terminal-size        >= 0.3  && < 0.4,
-    text                 >= 1.2  && < 1.3,
-    time                 >= 1.4  && < 1.10,
+    text                 >= 1.2  && < 2.1,
+    time                 >= 1.4  && < 1.13,
     unordered-containers >= 0.2  && < 0.3,
     yaml                 >= 0.8  && < 0.12,
     wcwidth              >= 0.0  && < 0.1,
@@ -112,13 +112,13 @@
     Buildable: False
 
   Build-depends:
-    base         >= 4.9  && < 5,
-    containers   >= 0.6  && < 0.7,
-    doctemplates >= 0.8  && < 0.12,
-    mtl          >= 2.2  && < 2.3,
-    pandoc       >= 2.11 && < 2.20,
-    text         >= 1.2  && < 1.3,
-    time         >= 1.6  && < 1.10
+    base         >= 4.9 && < 5,
+    containers   >= 0.6 && < 0.7,
+    doctemplates >= 0.8 && < 0.12,
+    mtl          >= 2.2 && < 2.3,
+    pandoc       >= 3.1 && < 3.2,
+    text         >= 1.2 && < 2.1,
+    time         >= 1.6 && < 1.13
 
 Test-suite patat-tests
   Main-is:          Main.hs
@@ -138,5 +138,5 @@
     tasty            >= 1.2  && < 1.5,
     tasty-hunit      >= 0.10 && < 0.11,
     tasty-quickcheck >= 0.10 && < 0.11,
-    text             >= 1.2  && < 1.3,
+    text             >= 1.2  && < 2.1,
     QuickCheck       >= 2.8  && < 2.15
