diff --git a/src/Text/Pandoc/Writers/Markdown.hs b/src/Text/Pandoc/Writers/Markdown.hs
index 99ffe64c7..6e6b6dcae 100644
--- a/src/Text/Pandoc/Writers/Markdown.hs
+++ b/src/Text/Pandoc/Writers/Markdown.hs
@@ -657,19 +657,23 @@ gridTable opts headless _aligns widths headers' rawRows =  do
                   else head' $$ border '='
   return $ border '-' $$ head'' $$ body $$ border '-'
 
+itemEndsWithTightList :: [Block] -> Bool
+itemEndsWithTightList bs =
+  case bs of
+        [Plain _, BulletList xs]    -> isTightList xs
+        [Plain _, OrderedList _ xs] -> isTightList xs
+        _ -> False
+
 -- | Convert bullet list item (list of blocks) to markdown.
 bulletListItemToMarkdown :: WriterOptions -> [Block] -> MD Doc
-bulletListItemToMarkdown opts items = do
-  contents <- blockListToMarkdown opts items
+bulletListItemToMarkdown opts bs = do
+  contents <- blockListToMarkdown opts bs
   let sps = replicate (writerTabStop opts - 2) ' '
   let start = text ('-' : ' ' : sps)
-  -- remove trailing blank line if it is a tight list
-  let contents' = case reverse items of
-                       (BulletList xs:_) | isTightList xs ->
-                            chomp contents <> cr
-                       (OrderedList _ xs:_) | isTightList xs ->
-                            chomp contents <> cr
-                       _ -> contents
+  -- remove trailing blank line if item ends with a tight list
+  let contents' = if itemEndsWithTightList bs
+                     then chomp contents <> cr
+                     else contents
   return $ hang (writerTabStop opts) start $ contents' <> cr
 
 -- | Convert ordered list item (a list of blocks) to markdown.
@@ -677,13 +681,17 @@ orderedListItemToMarkdown :: WriterOptions -- ^ options
                           -> String        -- ^ list item marker
                           -> [Block]       -- ^ list item (list of blocks)
                           -> MD Doc
-orderedListItemToMarkdown opts marker items = do
-  contents <- blockListToMarkdown opts items
+orderedListItemToMarkdown opts marker bs = do
+  contents <- blockListToMarkdown opts bs
   let sps = case length marker - writerTabStop opts of
                    n | n > 0 -> text $ replicate n ' '
                    _         -> text " "
   let start = text marker <> sps
-  return $ hang (writerTabStop opts) start $ contents <> cr
+  -- remove trailing blank line if item ends with a tight list
+  let contents' = if itemEndsWithTightList bs
+                     then chomp contents <> cr
+                     else contents
+  return $ hang (writerTabStop opts) start $ contents' <> cr
 
 -- | Convert definition list item (label, list of blocks) to markdown.
 definitionListItemToMarkdown :: WriterOptions
diff --git a/tests/writer.markdown b/tests/writer.markdown
index d705bb044..f59174023 100644
--- a/tests/writer.markdown
+++ b/tests/writer.markdown
@@ -210,7 +210,6 @@ Here’s another:
     -   Fee
     -   Fie
     -   Foe
-
 3.  Third
 
 Same thing but with paragraphs:
diff --git a/tests/writer.opml b/tests/writer.opml
index c10ca44c8..8b4dea3b1 100644
--- a/tests/writer.opml
+++ b/tests/writer.opml
@@ -35,7 +35,7 @@
   </outline>
   <outline text="Ordered" _note="Tight:&#10;&#10;1.  First&#10;2.  Second&#10;3.  Third&#10;&#10;and:&#10;&#10;1.  One&#10;2.  Two&#10;3.  Three&#10;&#10;Loose using tabs:&#10;&#10;1.  First&#10;&#10;2.  Second&#10;&#10;3.  Third&#10;&#10;and using spaces:&#10;&#10;1.  One&#10;&#10;2.  Two&#10;&#10;3.  Three&#10;&#10;Multiple paragraphs:&#10;&#10;1.  Item 1, graf one.&#10;&#10;    Item 1. graf two. The quick brown fox jumped over the lazy&#10;    dog’s back.&#10;&#10;2.  Item 2.&#10;&#10;3.  Item 3.&#10;&#10;">
   </outline>
-  <outline text="Nested" _note="-   Tab&#10;    -   Tab&#10;        -   Tab&#10;&#10;Here’s another:&#10;&#10;1.  First&#10;2.  Second:&#10;    -   Fee&#10;    -   Fie&#10;    -   Foe&#10;&#10;3.  Third&#10;&#10;Same thing but with paragraphs:&#10;&#10;1.  First&#10;&#10;2.  Second:&#10;&#10;    -   Fee&#10;    -   Fie&#10;    -   Foe&#10;&#10;3.  Third&#10;&#10;">
+  <outline text="Nested" _note="-   Tab&#10;    -   Tab&#10;        -   Tab&#10;&#10;Here’s another:&#10;&#10;1.  First&#10;2.  Second:&#10;    -   Fee&#10;    -   Fie&#10;    -   Foe&#10;3.  Third&#10;&#10;Same thing but with paragraphs:&#10;&#10;1.  First&#10;&#10;2.  Second:&#10;&#10;    -   Fee&#10;    -   Fie&#10;    -   Foe&#10;&#10;3.  Third&#10;&#10;">
   </outline>
   <outline text="Tabs and spaces" _note="-   this is a list item indented with tabs&#10;&#10;-   this is a list item indented with spaces&#10;&#10;    -   this is an example list item indented with tabs&#10;&#10;    -   this is an example list item indented with spaces&#10;&#10;">
   </outline>
diff --git a/tests/writer.plain b/tests/writer.plain
index a8c8f9bf9..0774e9465 100644
--- a/tests/writer.plain
+++ b/tests/writer.plain
@@ -215,7 +215,6 @@ Here’s another:
     -   Fee
     -   Fie
     -   Foe
-
 3.  Third
 
 Same thing but with paragraphs: