diff --git a/src/w_wad.c b/src/w_wad.c
index f1ae8b8358410748b3576851af2510320bd2bdb5..d0af5ede073648d78297314f96accc735b0cf20c 100644
--- a/src/w_wad.c
+++ b/src/w_wad.c
@@ -79,13 +79,6 @@ int	snprintf(char *str, size_t n, const char *fmt, ...);
 #define O_BINARY 0
 #endif
 
-#if defined(_MSC_VER)
-#pragma pack(1)
-#endif
-
-#if defined(_MSC_VER)
-#pragma pack()
-#endif
 
 typedef struct
 {
@@ -466,6 +459,9 @@ static boolean ResFindSignature (FILE* handle, char endPat[], UINT32 startpos)
 	return false;
 }
 
+#if defined(_MSC_VER)
+#pragma pack(1)
+#endif
 typedef struct zend_s
 {
 	char signature[4];
@@ -513,6 +509,9 @@ typedef struct zlentry_s
 	UINT16 namelen;
 	UINT16 xtralen;
 } ATTRPACK zlentry_t;
+#if defined(_MSC_VER)
+#pragma pack()
+#endif
 
 /** Create a lumpinfo_t array for a PKZip file.
  */
diff --git a/src/w_wad.h b/src/w_wad.h
index e77301dcef027066613c0deb9a72749fd900807d..6c33988c0d8f06ef7488e66f406db32669bf2953 100644
--- a/src/w_wad.h
+++ b/src/w_wad.h
@@ -24,12 +24,19 @@
 
 // a raw entry of the wad directory
 // NOTE: This sits here and not in w_wad.c because p_setup.c makes use of it to load map WADs inside PK3s.
+#if defined(_MSC_VER)
+#pragma pack(1)
+#endif
 typedef struct
 {
 	UINT32 filepos; // file offset of the resource
 	UINT32 size; // size of the resource
 	char name[8]; // name of the resource
 } ATTRPACK filelump_t;
+#if defined(_MSC_VER)
+#pragma pack()
+#endif
+
 
 // ==============================================================
 //               WAD FILE STRUCTURE DEFINITIONS