diff --git a/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw b/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw
index bf96dec6d138ce696bfe3cf57a7b03306b3b9b76..3dd6e0e84971868e55ea3238e7bfc1ec30e46916 100644
--- a/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw
+++ b/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw
@@ -139,7 +139,6 @@
 <</if>>
 <<if !hasAnyLegs($tempSlave)>>
 	<<set $tempSlave.heels = 0>>
-	<<set $tempSlave.heightImplant = 0>>
 <</if>>
 <<if !hasAnyArms($tempSlave)>>
 	<<set $tempSlave.nails = 0>>
diff --git a/src/data/backwardsCompatibility/datatypeCleanup.js b/src/data/backwardsCompatibility/datatypeCleanup.js
index 690bcc0cfc688bc4c043d877f3802349c526a4eb..675c392070cbbf968e37e356df092a5298ba2417 100644
--- a/src/data/backwardsCompatibility/datatypeCleanup.js
+++ b/src/data/backwardsCompatibility/datatypeCleanup.js
@@ -752,7 +752,7 @@ window.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() {
 		} else if (slave.buttImplantType === "none") {
 			slave.buttImplantType = "normal";
 		}
-		slave.heightImplant = Math.clamp(+slave.heightImplant, -1, 1) || 0;
+		slave.heightImplant = Math.clamp(+slave.heightImplant, -10, 10) || 0;
 		slave.earImplant = Math.clamp(+slave.earImplant, 0, 1) || 0;
 		slave.shouldersImplant = Math.clamp(+slave.shouldersImplant, -1, 1) || 0;
 		slave.hipsImplant = Math.clamp(+slave.hipsImplant, -1, 1) || 0;
diff --git a/src/npc/surgery/surgery.js b/src/npc/surgery/surgery.js
index 09909e85aa88081e8dbe45be022a9361cc009f32..59689791768fefc004dca2dbdb2c5327070afc23 100644
--- a/src/npc/surgery/surgery.js
+++ b/src/npc/surgery/surgery.js
@@ -885,7 +885,6 @@ window.removeLimbs = function(slave, limb) {
 				slave.legsTat = 0;
 				slave.shoes = "none";
 				slave.legAccessory = "none";
-				slave.heightImplant = 0;
 				slave.heels = 0;
 			}
 			break;
@@ -902,7 +901,6 @@ window.removeLimbs = function(slave, limb) {
 				slave.legsTat = 0;
 				slave.shoes = "none";
 				slave.legAccessory = "none";
-				slave.heightImplant = 0;
 				slave.heels = 0;
 			}
 			break;
@@ -911,6 +909,10 @@ window.removeLimbs = function(slave, limb) {
 			removeLimbs(slave, "right arm");
 			removeLimbs(slave, "left leg");
 			removeLimbs(slave, "right leg");
+			if (slave.heightImplant !== 0) {
+				slave.height -= slave.heightImplant * 10;
+			}
+			slave.heightImplant = 0;
 			break;
 	}
 };
diff --git a/src/uncategorized/nextWeek.tw b/src/uncategorized/nextWeek.tw
index f11a253982349eef9e0a675e3c48f0042de67f3c..46db24aef7f56f69201af604e564ec66b3512cc5 100644
--- a/src/uncategorized/nextWeek.tw
+++ b/src/uncategorized/nextWeek.tw
@@ -188,7 +188,7 @@
 		<<set $slaves[_i].armsTat = 0, $slaves[_i].nails = 0, $slaves[_i].armAccessory = "none">>
 	<</if>>
 	<<if !hasAnyLegs($slaves[_i])>>
-		<<set $slaves[_i].heels = 0, $slaves[_i].shoes = "none", $slaves[_i].legAccessory = "none", $slaves[_i].legsTat = 0, $slaves[_i].heightImplant = 0>>
+		<<set $slaves[_i].heels = 0, $slaves[_i].shoes = "none", $slaves[_i].legAccessory = "none", $slaves[_i].legsTat = 0>>
 	<</if>>
 	/* irregular leptin production weight gain/loss setter */
 	<<if $slaves[_i].geneticQuirks.wGain == 2 && $slaves[_i].geneticQuirks.wLoss == 2>>
diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw
index 085da0d4aa0018afd07f28c868537a18fd561498..3758abd09baed6b4a8bdf7266aedb5d26cc816f0 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -1525,9 +1525,9 @@
 						<span class="note">
 							This will remove $his ovaries as well
 						</span>
-					<</if>>
 				<</if>>
 			<</if>>
+			<</if>>
 
 			<<if getSlave($AS).indentureRestrictions < 1 && (getSlave($AS).breedingMark != 1 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>>
 				<<if (getSlave($AS).vagina == -1) && (getSlave($AS).dick != 0)>>
@@ -1869,26 +1869,33 @@
 			<<if (getSlave($AS).heightImplant == 0)>>
 				$He has normal femurs and humeri.
 			<<elseif (getSlave($AS).heightImplant > 0)>>
-				$His femurs, humeri, and other major bones have been lengthened.
+				$His femurs, humeri, and other major bones have been <<if getSlave($AS).heightImplant >= 1>>considerably <</if>>lengthened.
 			<<elseif (getSlave($AS).heightImplant < 0)>>
-				$His femurs, humeri, and other major bones have been shortened.
+				$His femurs, humeri, and other major bones have been <<if getSlave($AS).heightImplant <= -1>>considerably <</if>>shortened.
 			<</if>>
 			<div class="choices">
-				<<if (getSlave($AS).heightImplant == 0)>>
-					<<if getSlave($AS).indentureRestrictions < 1>>
-						[[Lengthen major bones|Surgery Degradation][getSlave($AS).heightImplant = 1,getSlave($AS).height += 10,cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),40),$surgeryType = "height"]] | [[Shorten major bones|Surgery Degradation][getSlave($AS).heightImplant = -1,getSlave($AS).height -= 10,cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),40),$surgeryType = "height"]]
-					<</if>>
-				<<elseif (getSlave($AS).height < (Height.mean(getSlave($AS))+15)) && (getSlave($AS).height >= (Height.mean(getSlave($AS))-15)) && ($surgeryUpgrade == 1)>>
-					<<if getSlave($AS).indentureRestrictions < 1>>
-						[[Advanced height gain surgery|Surgery Degradation][getSlave($AS).heightImplant = 1,getSlave($AS).height += 10,cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),40),$surgeryType = "height"]] | [[Advanced height reduction surgery|Surgery Degradation][getSlave($AS).heightImplant = -1,getSlave($AS).height -= 10,cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),40),$surgeryType = "height"]]
-					<</if>>
-				<<elseif (getSlave($AS).height < (Height.mean(getSlave($AS))+15)) && ($surgeryUpgrade == 1)>>
-					<<if getSlave($AS).indentureRestrictions < 1>>
-						[[Advanced height gain surgery|Surgery Degradation][getSlave($AS).heightImplant = 1,getSlave($AS).height += 10,cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),40),$surgeryType = "height"]]
-					<</if>>
-				<<elseif (getSlave($AS).height >= (Height.mean(getSlave($AS))-15)) && ($surgeryUpgrade == 1)>>
-					<<if getSlave($AS).indentureRestrictions < 1>>
-						[[Advanced height reduction surgery|Surgery Degradation][getSlave($AS).heightImplant = -1,getSlave($AS).height -= 10,cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),40),$surgeryType = "height"]]
+				<<if getSlave($AS).indentureRestrictions < 1>>
+					<<if (getSlave($AS).heightImplant == 0)>>
+						[[Lengthen major bones|Surgery Degradation][getSlave($AS).heightImplant += 1,getSlave($AS).height += 10,cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),40),$surgeryType = "height"]]
+						| [[Shorten major bones|Surgery Degradation][getSlave($AS).heightImplant -= 1,getSlave($AS).height -= 10,cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),40),$surgeryType = "height"]]
+					<<elseif getSlave($AS).heightImplant >= 1>>
+						<<if (getSlave($AS).height < (Height.mean(getSlave($AS))+15)) && $surgeryUpgrade == 1>>
+							[[Advanced height gain surgery|Surgery Degradation][getSlave($AS).heightImplant += 1,getSlave($AS).height += 10,cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),40),$surgeryType = "height"]] |
+						<</if>>
+						<<if getSlave($AS).heightImplant == 1>>
+							[[Reverse existing height surgery|Surgery Degradation][getSlave($AS).heightImplant -= 1,getSlave($AS).height -= 10,cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),40),$surgeryType = "height"]]
+						<<elseif $surgeryUpgrade == 1>>
+							[[Revert a stage of existing height surgery|Surgery Degradation][getSlave($AS).heightImplant -= 1,getSlave($AS).height -= 10,cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),40),$surgeryType = "height"]]
+						<</if>>
+					<<elseif getSlave($AS).heightImplant <= -1>>
+						<<if (getSlave($AS).height >= (Height.mean(getSlave($AS))-15)) && $surgeryUpgrade == 1>>
+							[[Advanced height reduction surgery|Surgery Degradation][getSlave($AS).heightImplant -= 1,getSlave($AS).height -= 10,cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),40),$surgeryType = "height"]] |
+						<</if>>
+						<<if getSlave($AS).heightImplant == -1>>
+							[[Reverse existing height surgery|Surgery Degradation][getSlave($AS).heightImplant += 1,getSlave($AS).height += 10,cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),40),$surgeryType = "height"]]
+						<<elseif $surgeryUpgrade == 1>>
+							[[Revert a stage of existing height surgery|Surgery Degradation][getSlave($AS).heightImplant += 1,getSlave($AS).height += 10,cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),40),$surgeryType = "height"]]
+						<</if>>
 					<</if>>
 				<</if>>
 			</div>
diff --git a/src/uncategorized/saLiveWithHG.tw b/src/uncategorized/saLiveWithHG.tw
index 3cb2e00d8f95b5a124ddf99388294d68e083a3a6..194319389d4ce5c518c87be9ed46d9536b04c113 100644
--- a/src/uncategorized/saLiveWithHG.tw
+++ b/src/uncategorized/saLiveWithHG.tw
@@ -970,13 +970,13 @@
 		<<elseif $HeadGirl.fetish == "masochist">>
 			<<if ($slaves[$i].health.condition > 40) && ($slaves[$i].heightImplant == 0) && ($slaves[$i].height < 185) && hasAllLimbs($slaves[$i])>>
 				$HeadGirl.slaveName has a subconscious need to be hurt by the biggest, strongest $girl possible, and directs the autosurgery to extend $slaves[$i].slaveName's arm and leg bones to make $him a little @@.lime;taller.@@
-				<<set $slaves[$i].heightImplant = 1, $slaves[$i].height += 1>>
+				<<set $slaves[$i].heightImplant = 1, $slaves[$i].height += 10>>
 				<<run surgeryDamage($slaves[$i], 20)>>
 			<</if>>
 		<<elseif $HeadGirl.fetish == "submissive">>
 			<<if ($slaves[$i].health.condition > 40) && ($slaves[$i].heightImplant == 0) && ($slaves[$i].height < 185) && hasAllLimbs($slaves[$i])>>
 				$HeadGirl.slaveName wants to be topped by the biggest, strongest $girl possible, and directs the autosurgery to extend $slaves[$i].slaveName's arm and leg bones to make $him a little @@.lime;taller.@@
-				<<set $slaves[$i].heightImplant = 1, $slaves[$i].height += 1>>
+				<<set $slaves[$i].heightImplant = 1, $slaves[$i].height += 10>>
 				<<run surgeryDamage($slaves[$i], 20)>>
 			<</if>>
 		<</if>>
diff --git a/src/utility/descriptionWidgetsFlesh.tw b/src/utility/descriptionWidgetsFlesh.tw
index 6606db2c695caf34a823eda825b5a94be7ee4722..9e49b865e37036518e3d035805a3fa605d2c64c7 100644
--- a/src/utility/descriptionWidgetsFlesh.tw
+++ b/src/utility/descriptionWidgetsFlesh.tw
@@ -16996,8 +16996,12 @@ $His womb contains <<= num(_slaveWD.litters.length)>> separate pregnancies;
 
 <<widget "heightImplantDescription">>
 
-<<if $activeSlave.heightImplant > 0>>
+<<if $activeSlave.heightImplant > 1>>
+	The proportions of $his arms and legs are wrong; it's obvious that they have been artificially lengthened.
+<<elseif $activeSlave.heightImplant > 0>>
 	The proportions of $his arms and legs are odd, as though they have been artificially lengthened.
+<<elseif $activeSlave.heightImplant < -1>>
+	The proportions of $his arms and legs are wrong; it's obvious that they have been artificially shortened.
 <<elseif $activeSlave.heightImplant < 0>>
 	The proportions of $his arms and legs are odd, as though they have been surgically shortened.
 <</if>>