diff --git a/src/g_demo.c b/src/g_demo.c
index 701f930e511a8234aa00ca82ca3b055085fabbb9..b30335b687818f0bd35914f48d09d237d63b23d7 100644
--- a/src/g_demo.c
+++ b/src/g_demo.c
@@ -2023,7 +2023,7 @@ void G_AddGhost(char *defdemoname)
 	char name[17],skin[17],color[MAXCOLORNAME+1],*n,*pdemoname,md5[16];
 	UINT8 cnamelen;
 	demoghost *gh;
-	UINT8 flags;
+	UINT8 flags, subversion;
 	UINT8 *buffer,*p;
 	mapthing_t *mthing;
 	UINT16 count, ghostversion;
@@ -2071,7 +2071,7 @@ void G_AddGhost(char *defdemoname)
 		return;
 	} p += 12; // DEMOHEADER
 	p++; // VERSION
-	p++; // SUBVERSION
+	subversion = READUINT8(p); // SUBVERSION
 	ghostversion = READUINT16(p);
 	switch(ghostversion)
 	{
@@ -2170,9 +2170,19 @@ void G_AddGhost(char *defdemoname)
 	count = READUINT16(p);
 	while (count--)
 	{
-		SKIPSTRING(p);
-		SKIPSTRING(p);
-		p++;
+		// In 2.2.7 netvar saving was updated
+		if (subversion < 7)
+		{
+			p += 2;
+			SKIPSTRING(p);
+			p++;
+		}
+		else
+		{
+			SKIPSTRING(p);
+			SKIPSTRING(p);
+			p++;
+		}
 	}
 
 	if (*p == DEMOMARKER)