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 be168122e34a5464d8c6e19976188ff7d00c0247..bde8d7ad9a38f7ba46fe833c03e638537b93f998 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -1783,26 +1783,33 @@
 			<<if ($activeSlave.heightImplant == 0)>>
 				$He has normal femurs and humeri.
 			<<elseif ($activeSlave.heightImplant > 0)>>
-				$His femurs, humeri, and other major bones have been lengthened.
+				$His femurs, humeri, and other major bones have been <<if $activeSlave.heightImplant >= 1>>considerably <</if>>lengthened.
 			<<elseif ($activeSlave.heightImplant < 0)>>
-				$His femurs, humeri, and other major bones have been shortened.
+				$His femurs, humeri, and other major bones have been <<if $activeSlave.heightImplant <= -1>>considerably <</if>>shortened.
 			<</if>>
 			<div class="choices">
-				<<if ($activeSlave.heightImplant == 0)>>
-					<<if $activeSlave.indentureRestrictions < 1>>
-						[[Lengthen major bones|Surgery Degradation][$activeSlave.heightImplant = 1,$activeSlave.height += 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,40),$surgeryType = "height"]] | [[Shorten major bones|Surgery Degradation][$activeSlave.heightImplant = -1,$activeSlave.height -= 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,40),$surgeryType = "height"]]
-					<</if>>
-				<<elseif ($activeSlave.height < (Height.mean($activeSlave)+15)) && ($activeSlave.height >= (Height.mean($activeSlave)-15)) && ($surgeryUpgrade == 1)>>
-					<<if $activeSlave.indentureRestrictions < 1>>
-						[[Advanced height gain surgery|Surgery Degradation][$activeSlave.heightImplant = 1,$activeSlave.height += 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,40),$surgeryType = "height"]] | [[Advanced height reduction surgery|Surgery Degradation][$activeSlave.heightImplant = -1,$activeSlave.height -= 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,40),$surgeryType = "height"]]
-					<</if>>
-				<<elseif ($activeSlave.height < (Height.mean($activeSlave)+15)) && ($surgeryUpgrade == 1)>>
-					<<if $activeSlave.indentureRestrictions < 1>>
-						[[Advanced height gain surgery|Surgery Degradation][$activeSlave.heightImplant = 1,$activeSlave.height += 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,40),$surgeryType = "height"]]
-					<</if>>
-				<<elseif ($activeSlave.height >= (Height.mean($activeSlave)-15)) && ($surgeryUpgrade == 1)>>
-					<<if $activeSlave.indentureRestrictions < 1>>
-						[[Advanced height reduction surgery|Surgery Degradation][$activeSlave.heightImplant = -1,$activeSlave.height -= 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,40),$surgeryType = "height"]]
+				<<if $activeSlave.indentureRestrictions < 1>>
+					<<if ($activeSlave.heightImplant == 0)>>
+						[[Lengthen major bones|Surgery Degradation][$activeSlave.heightImplant += 1,$activeSlave.height += 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,40),$surgeryType = "height"]]
+						| [[Shorten major bones|Surgery Degradation][$activeSlave.heightImplant -= 1,$activeSlave.height -= 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,40),$surgeryType = "height"]]
+					<<elseif $activeSlave.heightImplant >= 1>>
+						<<if ($activeSlave.height < (Height.mean($activeSlave)+15)) && $surgeryUpgrade == 1>>
+							[[Advanced height gain surgery|Surgery Degradation][$activeSlave.heightImplant += 1,$activeSlave.height += 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,40),$surgeryType = "height"]] |
+						<</if>>
+						<<if $activeSlave.heightImplant == 1>>
+							[[Reverse existing height surgery|Surgery Degradation][$activeSlave.heightImplant -= 1,$activeSlave.height -= 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,40),$surgeryType = "height"]]
+						<<elseif $surgeryUpgrade == 1>>
+							[[Revert a stage of existing height surgery|Surgery Degradation][$activeSlave.heightImplant -= 1,$activeSlave.height -= 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,40),$surgeryType = "height"]]
+						<</if>>
+					<<elseif $activeSlave.heightImplant <= -1>>
+						<<if ($activeSlave.height >= (Height.mean($activeSlave)-15)) && $surgeryUpgrade == 1>>
+							[[Advanced height reduction surgery|Surgery Degradation][$activeSlave.heightImplant -= 1,$activeSlave.height -= 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,40),$surgeryType = "height"]] |
+						<</if>>
+						<<if $activeSlave.heightImplant == -1>>
+							[[Reverse existing height surgery|Surgery Degradation][$activeSlave.heightImplant += 1,$activeSlave.height += 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,40),$surgeryType = "height"]]
+						<<elseif $surgeryUpgrade == 1>>
+							[[Revert a stage of existing height surgery|Surgery Degradation][$activeSlave.heightImplant += 1,$activeSlave.height += 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,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>>