diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,11 @@
 
+5.36
+----
+
+ * Raised `microlens` upper bound to allow building with 0.4.13.
+ * Replaced incomplete `Show` output for `Picture` with a derived
+   instance; derived `Show` for `Cursor` and `Background`, too.
+
 5.35.1
 ------
 
diff --git a/demos/Demo.hs b/demos/Demo.hs
--- a/demos/Demo.hs
+++ b/demos/Demo.hs
@@ -31,7 +31,7 @@
     [ "this line is hidden by the top layer"
     , "The vty demo program will echo the events generated by the pressed keys."
     , "Below there is a 240 color box."
-    , "Followed by a description of the 16 color pallete."
+    , "Followed by a description of the 16 color palette."
     , "Followed by tones of red using a 24-bit palette."
     , "If the 240 color box is not visible then the terminal"
     , "claims 240 colors are not supported."
diff --git a/src/Graphics/Vty/Attributes/Color.hs b/src/Graphics/Vty/Attributes/Color.hs
--- a/src/Graphics/Vty/Attributes/Color.hs
+++ b/src/Graphics/Vty/Attributes/Color.hs
@@ -95,7 +95,7 @@
 -- reported then the color reproduction will be incorrect.
 --
 -- If the terminal reports <= 16 colors then the 240 color palette
--- points are only mapped to the 8 color pallete. I'm not sure of
+-- points are only mapped to the 8 color palette. I'm not sure of
 -- the RGB points for the "bright" colors which is why they are not
 -- addressable via the 240 color palette.
 --
diff --git a/src/Graphics/Vty/Image.hs b/src/Graphics/Vty/Image.hs
--- a/src/Graphics/Vty/Image.hs
+++ b/src/Graphics/Vty/Image.hs
@@ -137,7 +137,7 @@
     let displayWidth = safeWcwidth c
     in HorizText a (TL.singleton c) displayWidth 1
 
--- | Make an image from a string of characters layed out on a single
+-- | Make an image from a string of characters laid out on a single
 -- row with the same display attribute. The string is assumed to be a
 -- sequence of ISO-10646 characters. The input string should be
 -- sanitized of escape sequences (ASCII 27) and carriage returns;
diff --git a/src/Graphics/Vty/Image/Internal.hs b/src/Graphics/Vty/Image/Internal.hs
--- a/src/Graphics/Vty/Image/Internal.hs
+++ b/src/Graphics/Vty/Image/Internal.hs
@@ -228,7 +228,7 @@
 --
 -- The result image will have a width equal to the sum of the two images
 -- width. And the height will equal the largest height of the two
--- images. The area not defined in one image due to a height missmatch
+-- images. The area not defined in one image due to a height mismatch
 -- will be filled with the background pattern.
 horizJoin :: Image -> Image -> Image
 horizJoin EmptyImage i          = i
@@ -259,7 +259,7 @@
 --
 -- The result image will have a height equal to the sum of the heights
 -- of both images. The width will equal the largest width of the two
--- images. The area not defined in one image due to a width missmatch
+-- images. The area not defined in one image due to a width mismatch
 -- will be filled with the background pattern.
 vertJoin :: Image -> Image -> Image
 vertJoin EmptyImage i          = i
diff --git a/src/Graphics/Vty/Input.hs b/src/Graphics/Vty/Input.hs
--- a/src/Graphics/Vty/Input.hs
+++ b/src/Graphics/Vty/Input.hs
@@ -77,7 +77,7 @@
 -- The input encoding determines how UTF-8 encoded characters are
 -- recognized.
 --
--- * 7-bit mode: UTF-8 can be input unambiguiously. UTF-8 input is
+-- * 7-bit mode: UTF-8 can be input unambiguously. UTF-8 input is
 -- a superset of ASCII. UTF-8 does not overlap escaped control key
 -- sequences. However, the escape key must be differentiated from
 -- escaped control key sequences by the timing of the input bytes.
@@ -95,7 +95,7 @@
 --
 -- == Terminal Input is Broken
 --
--- Clearly terminal input has fundemental issues. There is no easy way
+-- Clearly terminal input has fundamental issues. There is no easy way
 -- to reliably resolve these issues.
 --
 -- One resolution would be to ditch standard terminal interfaces
diff --git a/src/Graphics/Vty/Input/Mouse.hs b/src/Graphics/Vty/Input/Mouse.hs
--- a/src/Graphics/Vty/Input/Mouse.hs
+++ b/src/Graphics/Vty/Input/Mouse.hs
@@ -89,7 +89,7 @@
 hasBitSet :: Int -> Int -> Bool
 hasBitSet val bit = val .&. bit > 0
 
--- | Attempt to lassify an input string as a mouse event.
+-- | Attempt to classify an input string as a mouse event.
 classifyMouseEvent :: ByteString -> KClass
 classifyMouseEvent s = runParser s $ do
     when (not $ isMouseEvent s) failParse
@@ -102,7 +102,7 @@
         'M' -> classifyNormalMouseEvent
         _   -> failParse
 
--- Given a modifer/button value, determine which button was indicated
+-- Given a modifier/button value, determine which button was indicated
 getSGRButton :: Int -> Parser Button
 getSGRButton mods =
     let buttonMap = [ (leftButton,   BLeft)
diff --git a/src/Graphics/Vty/Output.hs b/src/Graphics/Vty/Output.hs
--- a/src/Graphics/Vty/Output.hs
+++ b/src/Graphics/Vty/Output.hs
@@ -78,7 +78,7 @@
 
 -- | Sets the cursor position to the given output column and row.
 --
--- This is not necessarially the same as the character position with the
+-- This is not necessarily the same as the character position with the
 -- same coordinates. Characters can be a variable number of columns in
 -- width.
 --
diff --git a/src/Graphics/Vty/Output/Mock.hs b/src/Graphics/Vty/Output/Mock.hs
--- a/src/Graphics/Vty/Output/Mock.hs
+++ b/src/Graphics/Vty/Output/Mock.hs
@@ -31,7 +31,7 @@
 -- without considering terminal specific issues.
 --
 -- The mock implementation is useful in manually determining if the
--- sequence of terminal operations matche the expected sequence. The
+-- sequence of terminal operations matches the expected sequence. The
 -- requirement of the produced representation is simplicity in parsing
 -- the text representation and determining how the picture was mapped to
 -- terminal operations.
diff --git a/src/Graphics/Vty/Output/TerminfoBased.hs b/src/Graphics/Vty/Output/TerminfoBased.hs
--- a/src/Graphics/Vty/Output/TerminfoBased.hs
+++ b/src/Graphics/Vty/Output/TerminfoBased.hs
@@ -453,8 +453,8 @@
 -- | The color table used by a terminal is a 16 color set followed by a
 -- 240 color set that might not be supported by the terminal.
 --
--- This takes a Color which clearly identifies which pallete to use and
--- computes the index into the full 256 color pallete.
+-- This takes a Color which clearly identifies which palette to use and
+-- computes the index into the full 256 color palette.
 ansiColorIndex :: Color -> Int
 ansiColorIndex (ISOColor v) = fromEnum v
 ansiColorIndex (Color240 v) = 16 + fromEnum v
diff --git a/src/Graphics/Vty/Picture.hs b/src/Graphics/Vty/Picture.hs
--- a/src/Graphics/Vty/Picture.hs
+++ b/src/Graphics/Vty/Picture.hs
@@ -30,10 +30,7 @@
     , picBackground :: Background
     -- ^ The picture's background to be displayed in locations with no
     -- Image data.
-    } deriving Eq
-
-instance Show Picture where
-    show (Picture _ layers _ ) = "Picture ?? " ++ show layers ++ " ??"
+    } deriving (Eq, Show)
 
 instance NFData Picture where
     rnf (Picture c l b) = c `deepseq` l `deepseq` b `deepseq` ()
@@ -92,7 +89,7 @@
     | Cursor !Int !Int
     -- | Show the cursor at the given absolute terminal column and row
     | AbsoluteCursor !Int !Int
-    deriving Eq
+    deriving (Eq, Show)
 
 instance NFData Cursor where
     rnf c = c `seq` ()
@@ -116,7 +113,7 @@
      --
      -- * End of line if there are no remaining non-skip ops.
     | ClearBackground
-    deriving Eq
+    deriving (Eq, Show)
 
 instance NFData Background where
     rnf (Background c a) = c `seq` a `seq` ()
diff --git a/src/Graphics/Vty/PictureToSpans.hs b/src/Graphics/Vty/PictureToSpans.hs
--- a/src/Graphics/Vty/PictureToSpans.hs
+++ b/src/Graphics/Vty/PictureToSpans.hs
@@ -72,7 +72,7 @@
 -- | Returns the DisplayOps for an image rendered to a window the size
 -- of the image.
 --
--- largerly used only for debugging.
+-- largely used only for debugging.
 displayOpsForImage :: Image -> DisplayOps
 displayOpsForImage i = displayOpsForPic (picForImage i) (imageWidth i, imageHeight i)
 
diff --git a/test/VerifyImageOps.hs b/test/VerifyImageOps.hs
--- a/test/VerifyImageOps.hs
+++ b/test/VerifyImageOps.hs
@@ -137,7 +137,7 @@
 cropBottomLimitsHeight i v = v >= 0 ==>
     v >= imageHeight (cropBottom v i)
 
--- rediculous tests just to satisfy my desire for nice code coverage :-P
+-- ridiculous tests just to satisfy my desire for nice code coverage :-P
 canShowImage :: Image -> Bool
 canShowImage i = length (show i) > 0
 
diff --git a/test/VerifyOutput.hs b/test/VerifyOutput.hs
--- a/test/VerifyOutput.hs
+++ b/test/VerifyOutput.hs
@@ -1,4 +1,4 @@
--- We setup the environment to envoke certain terminals of interest.
+-- We setup the environment to invoke certain terminals of interest.
 -- This assumes appropriate definitions exist in the current environment
 -- for the terminals of interest.
 {-# LANGUAGE ScopedTypeVariables #-}
diff --git a/vty.cabal b/vty.cabal
--- a/vty.cabal
+++ b/vty.cabal
@@ -1,5 +1,5 @@
 name:                vty
-version:             5.35.1
+version:             5.36
 license:             BSD3
 license-file:        LICENSE
 author:              AUTHORS
@@ -45,7 +45,7 @@
                        deepseq >= 1.1 && < 1.5,
                        directory,
                        filepath >= 1.0 && < 2.0,
-                       microlens < 0.4.13,
+                       microlens < 0.4.14,
                        microlens-mtl,
                        microlens-th,
                        hashable >= 1.2,
