diff --git a/app/Entities/Repos/PageRepo.php b/app/Entities/Repos/PageRepo.php
index 98fe4ef55..f66f2beb8 100644
--- a/app/Entities/Repos/PageRepo.php
+++ b/app/Entities/Repos/PageRepo.php
@@ -252,9 +252,7 @@ class PageRepo
     {
         // If the page itself is a draft simply update that
         if ($page->draft) {
-            if (isset($input['html'])) {
-                (new PageContent($page))->setNewHTML($input['html']);
-            }
+            $this->updateTemplateStatusAndContentFromInput($page, $input);
             $page->fill($input);
             $page->save();
 
diff --git a/tests/Entity/PageDraftTest.php b/tests/Entity/PageDraftTest.php
index 9e2ceff51..ec6707bc5 100644
--- a/tests/Entity/PageDraftTest.php
+++ b/tests/Entity/PageDraftTest.php
@@ -178,4 +178,30 @@ class PageDraftTest extends TestCase
             'html' => $page->html,
         ]);
     }
+
+    public function test_updating_page_draft_with_markdown_retains_markdown_content()
+    {
+        /** @var Book $book */
+        $book = Book::query()->first();
+        $this->asEditor()->get($book->getUrl('/create-page'));
+        /** @var Page $draft */
+        $draft = Page::query()->where('draft', '=', true)->where('book_id', '=', $book->id)->firstOrFail();
+
+        $resp = $this->put('/ajax/page/' . $draft->id . '/save-draft', [
+            'name' => 'My updated draft',
+            'markdown' => "# My markdown page\n\n[A link](https://example.com)",
+            'html' => '<p>checking markdown takes priority over this</p>'
+        ]);
+        $resp->assertOk();
+
+        $this->assertDatabaseHas('pages', [
+            'id' => $draft->id,
+            'draft' => true,
+            'name' => 'My updated draft',
+            'markdown' => "# My markdown page\n\n[A link](https://example.com)",
+        ]);
+
+        $draft->refresh();
+        $this->assertStringContainsString('href="https://example.com"', $draft->html);
+    }
 }