diff --git a/Source/Bind/EnumProcessor.cs b/Source/Bind/EnumProcessor.cs
index 14bf0a41..7f5eae00 100644
--- a/Source/Bind/EnumProcessor.cs
+++ b/Source/Bind/EnumProcessor.cs
@@ -101,9 +101,10 @@ namespace Bind
 
             // Split on IHV names, to ensure that characters appearing after these name are uppercase.
             var match = Utilities.Acronyms.Match(name);
+            int offset = 0; // Everytime we insert a match, we must increase offset to compensate.
             while (match.Success)
             {
-                int insert_pos = match.Index + match.Length;
+                int insert_pos = match.Index + match.Length + offset++;
                 translator.Insert(insert_pos, "_");
                 match = match.NextMatch();
             }
@@ -117,7 +118,6 @@ namespace Bind
             //     4. if current char is lowercase, respect next char case.
             bool is_after_underscore_or_number = true;
             bool is_previous_uppercase = false;
-            int pos = 0;
             foreach (char c in name)
             {
                 char char_to_add;
diff --git a/Source/Bind/Utilities.cs b/Source/Bind/Utilities.cs
index 89cc933f..1bd4fc43 100644
--- a/Source/Bind/Utilities.cs
+++ b/Source/Bind/Utilities.cs
@@ -74,6 +74,7 @@ namespace Bind
             RegexOptions.Compiled);
         public static readonly Regex Acronyms = new Regex(Extensions.ToString() + "|EGL|3TC|DXT|ES|RGBA|BGRA|RGB|BGR|ETC",
             RegexOptions.Compiled);
+
         #region internal StreamReader OpenSpecFile(string file)
 
         internal static StreamReader OpenSpecFile(string folder, string file)