diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,16 @@
 Brick changelog
 ---------------
 
+0.6.3
+-----
+
+Bug fixes:
+ * List: the list now properly renders when the available height is not
+   a multiple of the item height. Previously the list size would
+   decrease relative to the available height. Now the list renders
+   enough items to fill the space even if the top-most or bottom-most
+   item is partially visible, which is the expected behavior.
+
 0.6.2
 -----
 
diff --git a/brick.cabal b/brick.cabal
--- a/brick.cabal
+++ b/brick.cabal
@@ -1,5 +1,5 @@
 name:                brick
-version:             0.6.2
+version:             0.6.3
 synopsis:            A declarative terminal user interface library
 description:
   Write terminal applications painlessly with 'brick'! You write an
diff --git a/programs/EditDemo.hs b/programs/EditDemo.hs
--- a/programs/EditDemo.hs
+++ b/programs/EditDemo.hs
@@ -62,9 +62,6 @@
         V.EvKey V.KEsc [] -> M.halt st
         V.EvKey (V.KChar '\t') [] -> M.continue $ switchEditors st
         V.EvKey V.KBackTab [] -> M.continue $ switchEditors st
-        V.EvKey (V.KChar ' ') [] ->
-            M.continue st { _edit2 = (E.editor secondEditor (str . unlines) Nothing "hello\nworld")
-                          }
         _ -> M.continue =<< T.handleEventLensed st (currentEditorL st) ev
 
 initialState :: St
diff --git a/src/Brick/Widgets/List.hs b/src/Brick/Widgets/List.hs
--- a/src/Brick/Widgets/List.hs
+++ b/src/Brick/Widgets/List.hs
@@ -135,7 +135,22 @@
 
             start = max 0 $ idx - numPerHeight + 1
             num = min (numPerHeight * 2) (V.length (l^.listElementsL) - start)
-            numPerHeight = (c^.availHeightL) `div` (l^.listItemHeightL)
+
+            -- The number of items to show is the available height divided by
+            -- the item height...
+            initialNumPerHeight = (c^.availHeightL) `div` (l^.listItemHeightL)
+            -- ... but if the available height leaves a remainder of
+            -- an item height then we need to ensure that we render an
+            -- extra item to show a partial item at the top or bottom to
+            -- give the expected result when an item is more than one
+            -- row high. (Example: 5 rows available with item height
+            -- of 3 yields two items: one fully rendered, the other
+            -- rendered with only its top 2 or bottom 2 rows visible,
+            -- depending on how the viewport state changes.)
+            numPerHeight = initialNumPerHeight +
+                           if initialNumPerHeight * (l^.listItemHeightL) == c^.availHeightL
+                           then 0
+                           else 1
 
             off = start * (l^.listItemHeightL)
 
