diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,14 @@
 Brick changelog
 ---------------
 
+0.63
+----
+
+API changes:
+ * The `Viewport` type got a new field, `_vpContentSize` (and a
+   corresponding lens `vpContentSize`) to get the size of the viewport's
+   contents.
+
 0.62
 ----
 
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -75,6 +75,7 @@
 | [`maze`](https://github.com/benjaminselfridge/maze) | A Brick-based maze game |
 | [`pboy`](https://github.com/2mol/pboy) | A tiny PDF organizer |
 | [`hyahtzee2`](https://github.com/DamienCassou/hyahtzee2#readme) | Famous Yahtzee dice game |
+| [`brewsage`](https://github.com/gerdreiss/brewsage#readme) | A TUI for Homebrew |
 
 These third-party packages also extend `brick`:
 
diff --git a/brick.cabal b/brick.cabal
--- a/brick.cabal
+++ b/brick.cabal
@@ -1,5 +1,5 @@
 name:                brick
-version:             0.62
+version:             0.63
 synopsis:            A declarative terminal user interface library
 description:
   Write terminal user interfaces (TUIs) painlessly with 'brick'! You
diff --git a/src/Brick/Types.hs b/src/Brick/Types.hs
--- a/src/Brick/Types.hs
+++ b/src/Brick/Types.hs
@@ -21,6 +21,7 @@
   , vpSize
   , vpTop
   , vpLeft
+  , vpContentSize
 
   -- * Event-handling types
   , EventM(..)
diff --git a/src/Brick/Types/Internal.hs b/src/Brick/Types/Internal.hs
--- a/src/Brick/Types/Internal.hs
+++ b/src/Brick/Types/Internal.hs
@@ -42,6 +42,7 @@
   , vpSize
   , vpLeft
   , vpTop
+  , vpContentSize
   , imageL
   , cursorsL
   , extentsL
@@ -97,6 +98,8 @@
        -- ^ The row offset of the top of the viewport.
        , _vpSize :: DisplayRegion
        -- ^ The size of the viewport.
+       , _vpContentSize :: DisplayRegion
+       -- ^ The size of the contents of the viewport.
        }
        deriving (Show, Read, Generic, NFData)
 
diff --git a/src/Brick/Widgets/Core.hs b/src/Brick/Widgets/Core.hs
--- a/src/Brick/Widgets/Core.hs
+++ b/src/Brick/Widgets/Core.hs
@@ -1102,7 +1102,7 @@
 
       -- Update the viewport size.
       c <- getContext
-      let newVp = VP 0 0 newSize
+      let newVp = VP 0 0 newSize (0, 0)
           newSize = (c^.availWidthL, c^.availHeightL)
           doInsert (Just vp) = Just $ vp & vpSize .~ newSize
           doInsert Nothing = Just newVp
@@ -1178,7 +1178,8 @@
           fixLeft v = if V.imageWidth img < v^.vpSize._1
                    then v & vpLeft .~ 0
                    else v
-          updateVp = case typ of
+          updateContentSize v = v & vpContentSize .~ (V.imageWidth img, V.imageHeight img)
+          updateVp = updateContentSize . case typ of
               Both -> fixLeft . fixTop
               Horizontal -> fixLeft
               Vertical -> fixTop
