diff --git a/src/Text/Pandoc/Writers/Shared.hs b/src/Text/Pandoc/Writers/Shared.hs
index a9431a920..991ce5437 100644
--- a/src/Text/Pandoc/Writers/Shared.hs
+++ b/src/Text/Pandoc/Writers/Shared.hs
@@ -89,9 +89,12 @@ metaToJSON' blockWriter inlineWriter (Meta metamap) = do
 -- of the original JSON object itself, prior to addition of variables.
 addVariablesToJSON :: WriterOptions -> Value -> Value
 addVariablesToJSON opts metadata =
-  foldl (\acc (x,y) -> resetField x y acc)
-       (defField "meta-json" (toStringLazy $ encode metadata) metadata)
+  foldl (\acc (x,y) -> setField x y acc)
+       (defField "meta-json" (toStringLazy $ encode metadata) (Object mempty))
        (writerVariables opts)
+    `combineMetadata` metadata
+  where combineMetadata (Object o1) (Object o2) = Object $ H.union o1 o2
+        combineMetadata x _           = x
 
 metaValueToJSON :: Monad m
                 => ([Block] -> m String)