diff --git a/mode/markdown/markdown.js b/mode/markdown/markdown.js
index 5cf1bf59c7f0590c23ba8b40b769a45048ca0069..f2cea40d3b41932145b5c1706007469324114653 100644
--- a/mode/markdown/markdown.js
+++ b/mode/markdown/markdown.js
@@ -161,7 +161,6 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) {
       state.f = state.inline;
       return getType(state);
     } else if (stream.eat('>')) {
-      state.indentation++;
       state.quote = sol ? 1 : state.quote + 1;
       if (modeCfg.highlightFormatting) state.formatting = "quote";
       stream.eatSpace();
diff --git a/mode/markdown/test.js b/mode/markdown/test.js
index 0bf6b5fda35107ae50137cb5aa1eb22fd816b7a2..6f3cc8b1ac08275b9c118c1b86178457418e65af 100644
--- a/mode/markdown/test.js
+++ b/mode/markdown/test.js
@@ -272,6 +272,13 @@
      "",
      "hello");
 
+  // Header with leading space after continued blockquote (#3287, negative indentation)
+  MT("headerAfterContinuedBlockquote",
+     "[quote&quote-1 > foo]",
+     "[quote&quote-1 bar]",
+     "",
+     " [header&header-1 # hello]");
+
   // Check list types
 
   MT("listAsterisk",