diff --git a/components/esm4/loadnavm.cpp b/components/esm4/loadnavm.cpp
index 46d67f094d..bd982f4279 100644
--- a/components/esm4/loadnavm.cpp
+++ b/components/esm4/loadnavm.cpp
@@ -207,14 +207,25 @@ void ESM4::NavMesh::load(ESM4::Reader& reader)
 #endif
     while (reader.getSubRecordHeader())
     {
-        switch (reader.subRecordHeader().typeId)
+        const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
+        switch (subHdr.typeId)
         {
             case ESM4::SUB_NVNM:
             {
-                // FIXME: FO4 appears to have a different format
                 if (esmVer == 0x3F800000)
                 {
-                    reader.skipSubRecordData();
+                    // TODO: check if any valid TES5 plugin prepends XXXX to NVNM
+                    if (subSize)
+                    {
+                        reader.skipSubRecordData(subSize);
+                        reader.updateRecordRead(subSize);
+                        subSize = 0;
+                    }
+                    else
+                    {
+                        // FIXME: FO4 appears to have a different format
+                        reader.skipSubRecordData();
+                    }
                     break;
                 }
 
@@ -235,7 +246,6 @@ void ESM4::NavMesh::load(ESM4::Reader& reader)
                 }
                 else
                 {
-                    const ESM4::SubRecordHeader& subHdr = reader.subRecordHeader();
                     Log(Debug::Verbose) << ESM::printName(subHdr.typeId) << " skipping...";
                     reader.skipSubRecordData(); // FIXME: process the subrecord rather than skip
                 }
@@ -257,8 +267,7 @@ void ESM4::NavMesh::load(ESM4::Reader& reader)
                 reader.skipSubRecordData();
                 break;
             default:
-                throw std::runtime_error(
-                    "ESM4::NAVM::load - Unknown subrecord " + ESM::printName(reader.subRecordHeader().typeId));
+                throw std::runtime_error("ESM4::NAVM::load - Unknown subrecord " + ESM::printName(subHdr.typeId));
         }
     }
     // std::cout << "num nvnm " << std::dec << mData.size() << std::endl; // FIXME