diff --git a/src/npc/surgery/fatGraft.js b/src/npc/surgery/fatGraft.js
index cbda5be0a6023504e12c46cd3428da25b23056e7..dca4715b7aa6a958064ff364b018879d8ffb3ab2 100644
--- a/src/npc/surgery/fatGraft.js
+++ b/src/npc/surgery/fatGraft.js
@@ -20,7 +20,7 @@ App.UI.SlaveInteract.fatGraft = function(slave) {
 		let p;
 		let linkArray = [];
 		r.push(`All surplus body fat was harvested, and enough is graftable for an additional ${availableFat * 100}ccs per breast or an additional`);
-		if (getSlave(V.AS).butt <= 10) {
+		if (slave.butt <= 10) {
 			r.push(num(availableFat / 2));
 		} else {
 			r.push(num(availableFat / 5));
@@ -71,26 +71,28 @@ App.UI.SlaveInteract.fatGraft = function(slave) {
 		r = [];
 		linkArray = [];
 		App.UI.DOM.appendNewElement("div", p,);
-		if (getSlave(V.AS).butt <= 10) {
+		if (slave.butt <= 10) {
 			r.push(buttFat * 2);
 		} else {
 			r.push(buttFat * 5);
 		}
 		r.push(`units of fat will be added to ${his} ass for a size gain of ${buttFat}.`);
 		App.UI.DOM.appendNewElement("div", p, r.join(" "));
-		const fatMoved = (getSlave(V.AS).butt > 10) ? 0.2 : 0.5;
-		if (availableFat > 0) {
+		const fatMoved = (slave.butt > 10) ? 0.2 : 0.5;  // Buttsizes are apparently not linear, so it takes a lot more fat to go up one "size".
+		if (availableFat * fatMoved > 1) {
 			linkArray.push(
 				App.UI.DOM.link(
 					"Increase",
 					() => {
-						buttFat += fatMoved;
-						availableFat -= 1;
+						buttFat++;
+						availableFat -= availableFat * fatMoved;
 						refresh();
 					}
 				)
 			);
-		} else {
+		} else if (availableFat) {
+			linkArray.push(App.UI.DOM.disabledLink(`Not enough fat remains to increase ${his} butt an entire size.`, []));
+		}else {
 			linkArray.push(App.UI.DOM.disabledLink(`No more fat available.`, []));
 		}
 		if (buttFat > 0) {
@@ -98,8 +100,8 @@ App.UI.SlaveInteract.fatGraft = function(slave) {
 				App.UI.DOM.link(
 					"Decrease",
 					() => {
-						buttFat -= fatMoved;
-						availableFat -= 1;
+						buttFat--;
+						availableFat += availableFat * fatMoved;
 						refresh();
 					}
 				)