diff --git a/Source/Core/GZBuilder/md3/ModelReader.cs b/Source/Core/GZBuilder/md3/ModelReader.cs
index a3a18bef5d3bc6cb4127a1cf3b822e056cbac366..205ab66e65fef7b90c2461a595962b8197483438 100755
--- a/Source/Core/GZBuilder/md3/ModelReader.cs
+++ b/Source/Core/GZBuilder/md3/ModelReader.cs
@@ -396,15 +396,23 @@ namespace CodeImp.DoomBuilder.GZBuilder.MD3
                 vertices[i].nz = -nsum.z / total;
             }
 
+            List<int> exGroups = new List<int>();
             Dictionary<int, int> textureGroupRemap = new Dictionary<int, int>();
-            int topGrp = 0;
             for (int i = 0; i < polys.Length; i++)
             {
-                if (textureGroupRemap.ContainsKey(polys[i].TexNum))
+                if (exGroups.Contains(polys[i].TexNum))
                     continue;
-                textureGroupRemap[polys[i].TexNum] = topGrp++;
+                if (exGroups.Count == 0 ||
+                    polys[i].TexNum <= exGroups[0])
+                    exGroups.Insert(0, polys[i].TexNum);
+                else if (exGroups.Count == 0 ||
+                         polys[i].TexNum >= exGroups[exGroups.Count - 1])
+                    exGroups.Add(polys[i].TexNum);
             }
 
+            for (int i = 0; i < exGroups.Count; i++)
+                textureGroupRemap[exGroups[i]] = i;
+
             if (skins == null)
             {
                 List<WorldVertex> out_verts = new List<WorldVertex>();
@@ -427,7 +435,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.MD3
             }
             else
             {
-                for (int k = 0; k < topGrp; k++)
+                for (int k = 0; k < exGroups.Count; k++)
                 {
                     List<WorldVertex> out_verts = new List<WorldVertex>();
                     List<int> out_polys = new List<int>();
diff --git a/Source/Core/Properties/AssemblyInfo.cs b/Source/Core/Properties/AssemblyInfo.cs
index fe650852f42e25eb4133a9e421e2006fbbc00742..02e38eabc3bb3112e1dedfe7d18e0aeaebdfb44d 100755
--- a/Source/Core/Properties/AssemblyInfo.cs
+++ b/Source/Core/Properties/AssemblyInfo.cs
@@ -30,6 +30,6 @@ using CodeImp.DoomBuilder;
 //      Build Number
 //      Revision
 //
-[assembly: AssemblyVersion("2.3.0.3022")]
+[assembly: AssemblyVersion("2.3.0.3023")]
 [assembly: NeutralResourcesLanguageAttribute("en")]
-[assembly: AssemblyHash("634ba54")]
+[assembly: AssemblyHash("85f00ab")]
diff --git a/Source/Plugins/BuilderModes/Properties/AssemblyInfo.cs b/Source/Plugins/BuilderModes/Properties/AssemblyInfo.cs
index aa6799efaf1392315e5ac9c9a6e7dae8482b1a0c..4e0992178658e7f1d7250c059987b44672ae8465 100755
--- a/Source/Plugins/BuilderModes/Properties/AssemblyInfo.cs
+++ b/Source/Plugins/BuilderModes/Properties/AssemblyInfo.cs
@@ -29,5 +29,5 @@ using System.Resources;
 //      Build Number
 //      Revision
 //
-[assembly: AssemblyVersion("2.3.0.3022")]
+[assembly: AssemblyVersion("2.3.0.3023")]
 [assembly: NeutralResourcesLanguageAttribute("en")]