diff --git a/src/hardware/hw_md2load.c b/src/hardware/hw_md2load.c
index 803573ade5e0645b6a678fc94e9cb7d7cb5f67f4..fed81e411dacc6b3f87ccb985cb49c0331381770 100644
--- a/src/hardware/hw_md2load.c
+++ b/src/hardware/hw_md2load.c
@@ -253,6 +253,7 @@ model_t *MD2_LoadModel(const char *fileName, int ztag, boolean useFloat)
 	md2texcoord_t *texcoords;
 	md2frame_t *frames;
 	char *fname = NULL;
+	int foffset = 0;
 
 	int t;
 
@@ -331,9 +332,10 @@ model_t *MD2_LoadModel(const char *fileName, int ztag, boolean useFloat)
 	fname = retModel->framenames;
 	for (i = 0; i < header->numFrames; i++)
 	{
-		memcpy(fname, frames->name, 16);
+		md2frame_t *fr = (md2frame_t*)&buffer[header->offsetFrames + foffset];
+		memcpy(fname, fr->name, 16);
+		foffset += sizeof(md2frame_t) + (sizeof(md2vertex_t) * header->numXYZ);
 		fname += 16;
-		frames++;
 	}
 
 	// Read in textures