diff --git a/src/p_slopes.c b/src/p_slopes.c
index a4f334caff3ce36ba4dfd6baaf9ebb086f78a1a4..32cae8ca6ea35703f0f57ff20ee59cd4a528d5cb 100644
--- a/src/p_slopes.c
+++ b/src/p_slopes.c
@@ -876,26 +876,16 @@ void P_ButteredSlope(mobj_t *mo)
 			return; // Allow the player to stand still on slopes below a certain steepness
 	}
 
-	thrust = FINESINE(mo->standingslope->zangle>>ANGLETOFINESHIFT) * 3 / 2 * (mo->eflags & MFE_VERTICALFLIP ? 1 : -1);
+	thrust = FINESINE(mo->standingslope->zangle>>ANGLETOFINESHIFT) * 11 / 4 * (mo->eflags & MFE_VERTICALFLIP ? 1 : -1);
 
 	if (mo->player && (mo->player->pflags & PF_SPINNING)) {
-		fixed_t mult = 0;
-		if (mo->momx || mo->momy) {
-			angle_t angle = R_PointToAngle2(0, 0, mo->momx, mo->momy) - mo->standingslope->xydirection;
-
-			if (P_MobjFlip(mo) * mo->standingslope->zdelta < 0)
-				angle ^= ANGLE_180;
-
-			mult = FINECOSINE(angle >> ANGLETOFINESHIFT);
-		}
-
-		//CONS_Printf("%d\n", mult);
-
-		thrust = FixedMul(thrust, FRACUNIT*2/3 + mult/8);
+		if (P_GetZAt(mo->standingslope, mo->x+mo->momx, mo->y+mo->momy) < P_GetZAt(mo->standingslope, mo->x, mo->y)) // if they're going down increase thrust
+			thrust = FixedMul(thrust, 5*FRACUNIT/2);
 	}
 
-	if (mo->momx || mo->momy) // Slightly increase thrust based on the object's speed
-		thrust = FixedMul(thrust, FRACUNIT+P_AproxDistance(mo->momx, mo->momy)/16);
+	// I've commented this out for now until I figure out whether it should be kept or not
+	//if (mo->momx || mo->momy) // Slightly increase thrust based on the object's speed
+		//thrust = FixedMul(thrust, FRACUNIT+P_AproxDistance(mo->momx, mo->momy)/16);
 	// This makes it harder to zigzag up steep slopes, as well as allows greater top speed when rolling down
 
 	// Multiply by gravity