diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,16 @@
 Brick changelog
 ---------------
 
+0.5.1
+-----
+
+Bug fixes:
+ * Fix negative cropping in hCenter, vCenter, and cropResultToContext
+   (fixes #52)
+ * Remove unnecessary Eq constraint from listReplace (fixes #48; thanks
+   sifmelcara)
+ * Mention Google Group in README
+
 0.5
 ---
 
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -65,6 +65,14 @@
 To get started, see the [first few sections of the brick
 user guide](docs/guide.rst).
 
+Brick-Users Discussion
+----------------------
+
+The `brick-users` Google Group / e-mail list is a place to discuss
+library changes, give feedback, and ask questions. You can subscribe at:
+
+[https://groups.google.com/group/brick-users](https://groups.google.com/group/brick-users)
+
 Documentation
 -------------
 
diff --git a/brick.cabal b/brick.cabal
--- a/brick.cabal
+++ b/brick.cabal
@@ -1,5 +1,5 @@
 name:                brick
-version:             0.5
+version:             0.5.1
 synopsis:            A declarative terminal user interface library
 description:
   Write terminal applications painlessly with 'brick'! You write an
diff --git a/src/Brick/Widgets/Center.hs b/src/Brick/Widgets/Center.hs
--- a/src/Brick/Widgets/Center.hs
+++ b/src/Brick/Widgets/Center.hs
@@ -37,9 +37,9 @@
            c <- getContext
            let rWidth = result^.imageL.to imageWidth
                rHeight = result^.imageL.to imageHeight
-               remainder = c^.availWidthL - (leftPaddingAmount * 2)
-               leftPaddingAmount = (c^.availWidthL - rWidth) `div` 2
-               rightPaddingAmount = leftPaddingAmount + remainder
+               remainder = max 0 $ c^.availWidthL - (leftPaddingAmount * 2)
+               leftPaddingAmount = max 0 $ (c^.availWidthL - rWidth) `div` 2
+               rightPaddingAmount = max 0 $ leftPaddingAmount + remainder
                leftPadding = charFill (c^.attrL) ch leftPaddingAmount rHeight
                rightPadding = charFill (c^.attrL) ch rightPaddingAmount rHeight
                paddedImage = horizCat [ leftPadding
@@ -67,9 +67,9 @@
            c <- getContext
            let rWidth = result^.imageL.to imageWidth
                rHeight = result^.imageL.to imageHeight
-               remainder = c^.availHeightL - (topPaddingAmount * 2)
-               topPaddingAmount = (c^.availHeightL - rHeight) `div` 2
-               bottomPaddingAmount = topPaddingAmount + remainder
+               remainder = max 0 $ c^.availHeightL - (topPaddingAmount * 2)
+               topPaddingAmount = max 0 $ (c^.availHeightL - rHeight) `div` 2
+               bottomPaddingAmount = max 0 $ topPaddingAmount + remainder
                topPadding = charFill (c^.attrL) ch rWidth topPaddingAmount
                bottomPadding = charFill (c^.attrL) ch rWidth bottomPaddingAmount
                paddedImage = vertCat [ topPadding
diff --git a/src/Brick/Widgets/Internal.hs b/src/Brick/Widgets/Internal.hs
--- a/src/Brick/Widgets/Internal.hs
+++ b/src/Brick/Widgets/Internal.hs
@@ -42,4 +42,4 @@
 cropResultToContext :: Result -> RenderM Result
 cropResultToContext result = do
     c <- getContext
-    return $ result & imageL %~ (V.crop (c^.availWidthL) (c^.availHeightL))
+    return $ result & imageL %~ (V.crop (max 0 $ c^.availWidthL) (max 0 $ c^.availHeightL))
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
@@ -193,7 +193,7 @@
 -- | Replace the contents of a list with a new set of elements and
 -- update the new selected index. If the specified selected index (via
 -- 'Just') is not in the list bounds, zero is used instead.
-listReplace :: Eq e => V.Vector e -> Maybe Int -> List e -> List e
+listReplace :: V.Vector e -> Maybe Int -> List e -> List e
 listReplace es idx l =
     let newSel = clamp 0 (V.length es - 1) <$> idx
     in l & listSelectedL .~ newSel
