diff --git a/src/g_demo.c b/src/g_demo.c
index c97dbcf9ee0559e23e6635e4a62f2de1cb843af2..8324a4f2183d850cc625ad39e20b9e27596748e6 100644
--- a/src/g_demo.c
+++ b/src/g_demo.c
@@ -94,7 +94,7 @@ demoghost *ghosts = NULL;
 // DEMO RECORDING
 //
 
-#define DEMOVERSION 0x000e
+#define DEMOVERSION 0x000f
 #define DEMOHEADER  "\xF0" "SRB2Replay" "\x0F"
 
 #define DF_GHOST        0x01 // This demo contains ghost data too!
@@ -1029,7 +1029,11 @@ void G_ReadMetalTic(mobj_t *metal)
 	if (ziptic & GZT_ANGLE)
 		metal->angle = READUINT8(metal_p)<<24;
 	if (ziptic & GZT_FRAME)
+	{
 		oldmetal.frame = READUINT32(metal_p);
+		if (metalversion < 0x000f)
+			oldmetal.frame = G_ConvertOldFrameFlags(oldmetal.frame);
+	}
 	if (ziptic & GZT_SPR2)
 		oldmetal.sprite2 = READUINT8(metal_p);
 
@@ -1169,6 +1173,8 @@ void G_ReadMetalTic(mobj_t *metal)
 					follow->sprite2 = 0;
 				follow->sprite = READUINT16(metal_p);
 				follow->frame = READUINT32(metal_p); // NOT & FF_FRAMEMASK here, so 32 bits
+				if (metalversion < 0x000f)
+					follow->frame = G_ConvertOldFrameFlags(follow->frame);
 				follow->angle = metal->angle;
 				follow->color = (metalversion==0x000c) ? READUINT8(metal_p) : READUINT16(metal_p);
 
@@ -1680,8 +1686,9 @@ UINT8 G_CmpDemoTime(char *oldname, char *newname)
 	switch(oldversion) // demoversion
 	{
 	case DEMOVERSION: // latest always supported
-	case 0x000d: // The previous demoversion also supported
-	case 0x000c: // all that changed between then and now was longer color name
+	case 0x000e: // The previous demoversions also supported
+	case 0x000d: // all that changed between then and now was longer color name
+	case 0x000c:
 		break;
 	// too old, cannot support.
 	default:
@@ -1824,6 +1831,7 @@ void G_DoPlayDemo(char *defdemoname)
 	switch(demoversion)
 	{
 	case 0x000d:
+	case 0x000e:
 	case DEMOVERSION: // latest always supported
 		cnamelen = MAXCOLORNAME;
 		break;
@@ -2077,6 +2085,7 @@ void G_AddGhost(char *defdemoname)
 	switch(ghostversion)
 	{
 	case 0x000d:
+	case 0x000e:
 	case DEMOVERSION: // latest always supported
 		cnamelen = MAXCOLORNAME;
 		break;
@@ -2337,8 +2346,9 @@ void G_DoPlayMetal(void)
 	switch(metalversion)
 	{
 	case DEMOVERSION: // latest always supported
-	case 0x000d: // There are checks wheter the momentum is from older demo versions or not
-	case 0x000c: // all that changed between then and now was longer color name
+	case 0x000e: // There are checks wheter the momentum is from older demo versions or not
+	case 0x000d: // all that changed between then and now was longer color name
+	case 0x000c:
 		break;
 	// too old, cannot support.
 	default:
@@ -2554,3 +2564,45 @@ boolean G_CheckDemoStatus(void)
 
 	return false;
 }
+
+// 2.2.10 shifted some frame flags around, this function converts frame flags from older versions to their 2.2.10 equivalents.
+INT32 G_ConvertOldFrameFlags(INT32 frame)
+{
+	if (frame & 0x01000000) // was FF_ANIMATE, is now FF_VERTICALFLIP
+	{
+		frame &= ~0x01000000;
+		frame |= FF_ANIMATE;
+	}
+
+	if (frame & 0x02000000) // was FF_RANDOMANIM, is now FF_HORIZONTALFLIP
+	{
+		frame &= ~0x02000000;
+		frame |= FF_RANDOMANIM;
+	}
+
+	if (frame & 0x04000000) // was FF_GLOBALANIM, is now empty
+	{
+		frame &= ~0x04000000;
+		frame |= FF_GLOBALANIM;
+	}
+
+	if (frame & 0x00200000) // was FF_VERTICALFLIP, is now FF_FULLDARK
+	{
+		frame &= ~0x00200000;
+		frame |= FF_VERTICALFLIP;
+	}
+
+	if (frame & 0x00400000) // was FF_HORIZONTALFLIP, is now FF_PAPERSPRITE
+	{
+		frame &= ~0x00400000;
+		frame |= FF_HORIZONTALFLIP;
+	}
+
+	if (frame & 0x00800000) // was FF_PAPERSPRITE, is now FF_FLOORSPRITE
+	{
+		frame &= ~0x00800000;
+		frame |= FF_PAPERSPRITE;
+	}
+
+	return frame;
+}
diff --git a/src/g_demo.h b/src/g_demo.h
index 73cf273582ff1baeffcb2638ebe81654e6b8d70d..1a618ba64521d2049824040b66b2a94b341678a0 100644
--- a/src/g_demo.h
+++ b/src/g_demo.h
@@ -82,5 +82,6 @@ void G_StopMetalDemo(void);
 ATTRNORETURN void FUNCNORETURN G_StopMetalRecording(boolean kill);
 void G_StopDemo(void);
 boolean G_CheckDemoStatus(void);
+INT32 G_ConvertOldFrameFlags(INT32 frame);
 
 #endif // __G_DEMO__