diff --git a/typo3/sysext/core/Classes/Domain/Repository/PageRepository.php b/typo3/sysext/core/Classes/Domain/Repository/PageRepository.php
index 5ba233649c569e7ae19df6bf2aaf347db77707d7..4dd0cfe0fd51e6de19e26a8c9865eae2a7dcfd93 100644
--- a/typo3/sysext/core/Classes/Domain/Repository/PageRepository.php
+++ b/typo3/sysext/core/Classes/Domain/Repository/PageRepository.php
@@ -687,7 +687,7 @@ class PageRepository implements LoggerAwareInterface
                             $row['_ORIG_pid'] = $olrow['_ORIG_pid'];
                         }
                         foreach ($row as $fN => $fV) {
-                            if ($fN !== 'uid' && $fN !== 'pid' && isset($olrow[$fN])) {
+                            if ($fN !== 'uid' && $fN !== 'pid' && array_key_exists($fN, $olrow)) {
                                 $row[$fN] = $olrow[$fN];
                             } elseif ($fN === 'uid') {
                                 $row['_LOCALIZED_UID'] = $olrow['uid'];
diff --git a/typo3/sysext/core/Tests/Functional/Domain/Repository/PageRepositoryTest.php b/typo3/sysext/core/Tests/Functional/Domain/Repository/PageRepositoryTest.php
index 3fbb19dd930bf3259ea822152f7baa5417a5a5bf..240d219e740e7cc75731881eaaa7e0ab5374ec7d 100644
--- a/typo3/sysext/core/Tests/Functional/Domain/Repository/PageRepositoryTest.php
+++ b/typo3/sysext/core/Tests/Functional/Domain/Repository/PageRepositoryTest.php
@@ -614,4 +614,25 @@ class PageRepositoryTest extends FunctionalTestCase
         self::assertFalse(isset($row['_PAGES_OVERLAY_UID']));
         self::assertFalse(isset($row['_PAGES_OVERLAY_LANGUAGE']));
     }
+
+    /**
+     * @test
+     */
+    public function getLanguageOverlayResolvesContentWithNullInValues(): void
+    {
+        $context = new Context();
+        $context->setAspect('language', new LanguageAspect(1, 1, LanguageAspect::OVERLAYS_ON_WITH_FLOATING, [0]));
+        $subject = new PageRepository($context);
+        $record = $subject->getRawRecord('tt_content', 1);
+        self::assertSame('Default Content #1', $record['header']);
+        $overlaidRecord = $subject->getLanguageOverlay('tt_content', $record);
+        self::assertSame(2, (int)$overlaidRecord['_LOCALIZED_UID']);
+        self::assertSame('Translated Content #1', $overlaidRecord['header']);
+
+        // Check if "bodytext" is actually overlaid with a NULL value
+        $record = $subject->getRawRecord('tt_content', 3);
+        $overlaidRecord = $subject->getLanguageOverlay('tt_content', $record);
+        self::assertSame('Translated #2', $overlaidRecord['header']);
+        self::assertNull($overlaidRecord['bodytext']);
+    }
 }
diff --git a/typo3/sysext/core/Tests/Functional/Fixtures/pages.csv b/typo3/sysext/core/Tests/Functional/Fixtures/pages.csv
index 3841a3baeadbd1e968fd0f6d5f39f152cc73e357..486a00b3c5a380579407f023dc55834f76c6a732 100644
--- a/typo3/sysext/core/Tests/Functional/Fixtures/pages.csv
+++ b/typo3/sysext/core/Tests/Functional/Fixtures/pages.csv
@@ -22,3 +22,9 @@ pages,,,,,,,,,,,,,,,
 ,1002,1000,root translation,0,,0,0,0,0,0,1,1001,1,0,0
 ,1003,1000,Mount default language,0,,0,0,0,0,0,0,0,7,1001,1
 ,1004,1000,Mount translation,0,,0,0,0,0,0,1,1003,7,1001,1
+tt_content,,,,,,,,,,,,,,,,
+,uid,pid,header,bodytext,sys_language_uid,l18n_parent,,,,,,,,,,
+,1,1,"Default Content #1","<p>Say thanks for HTML in the DB</p>",0,0,,,,,,,,,,
+,2,1,"Translated Content #1","<p>Grazie por HTML en la database</p>",1,1,,,,,,,,,,
+,3,1,"Default Content #2","<p>Could be anything</p>",0,0,,,,,,,,,,
+,4,1,"Translated #2","\NULL",1,3,,,,,,,,,,
\ No newline at end of file