diff --git a/src/npc/generate/generateNewSlaveJS.js b/src/npc/generate/generateNewSlaveJS.js
index d60cdb885f882efbcc59cd91ff66359be39d1bdd..f4be6eddea09515960d177fb1e776dd5fba8b2e3 100644
--- a/src/npc/generate/generateNewSlaveJS.js
+++ b/src/npc/generate/generateNewSlaveJS.js
@@ -88,8 +88,15 @@ globalThis.GenerateNewSlave = (function() {
 		x.disableDisability = disableDisability || 0;
 		slave = baseSlave(getSeed());
 
-		preGenCombinedStats();
+		// generate genetic quirks first so heterochromia doesn't get confused
 		sex = sex || GenerateChromosome(getSeed());
+		if (sex === "XY") {
+			generateXYGeneticQuirks();
+		} else {
+			generateXXGeneticQuirks();
+		}
+
+		preGenCombinedStats();
 		if (sex === "XY") {
 			GenerateXYSlave();
 		} else {
@@ -151,7 +158,6 @@ globalThis.GenerateNewSlave = (function() {
 		slave.ovaries = 1;
 		slave.energy = jsRandom(1, 85, undefined, getSeed());
 
-		generateXXGeneticQuirks();
 		generateXXBodyProportions();
 		generateVagina();
 		generateXXPreferences();
@@ -171,7 +177,6 @@ globalThis.GenerateNewSlave = (function() {
 		slave.prostate = 1;
 		slave.energy = jsRandom(15, 90, undefined, getSeed());
 
-		generateXYGeneticQuirks();
 		generateXYBodyProportions();
 		generateDick();
 		generateCircumcision();