diff --git a/src/Text/Pandoc/Writers/RST.hs b/src/Text/Pandoc/Writers/RST.hs
index 084615357..f82597c55 100644
--- a/src/Text/Pandoc/Writers/RST.hs
+++ b/src/Text/Pandoc/Writers/RST.hs
@@ -457,8 +457,11 @@ transformInlines =  insertBS .
 -- them either collapsing them in the outer inline container or
 -- pulling them out of it
 flatten :: Inline -> [Inline]
-flatten outer = combineAll $ dropInlineParent outer
-  where combineAll = foldl combine []
+flatten outer
+  | null contents = [outer]
+  | otherwise     = combineAll contents
+  where contents = dropInlineParent outer
+        combineAll = foldl combine []
 
         combine :: [Inline] -> Inline -> [Inline]
         combine f i = 
diff --git a/test/Tests/Writers/RST.hs b/test/Tests/Writers/RST.hs
index 89ad1de48..a1a4510e0 100644
--- a/test/Tests/Writers/RST.hs
+++ b/test/Tests/Writers/RST.hs
@@ -64,6 +64,9 @@ tests = [ testGroup "rubrics"
             -- the test above is the reason why we call
             -- stripLeadingTrailingSpace through transformNested after
             -- flatten
+          , testCase "preserves empty parents" $
+            flatten (Image ("",[],[]) [] ("loc","title")) @?=
+            [Image ("",[],[]) [] ("loc","title")]
           ]
         , testGroup "inlines"
           [ "are removed when empty" =: -- #4434