diff --git a/src/main/java/chylex/bettercontrols/config/BetterControlsConfig.java b/src/main/java/chylex/bettercontrols/config/BetterControlsConfig.java
index 02e9ce9..4f224d1 100644
--- a/src/main/java/chylex/bettercontrols/config/BetterControlsConfig.java
+++ b/src/main/java/chylex/bettercontrols/config/BetterControlsConfig.java
@@ -24,14 +24,14 @@ public final class BetterControlsConfig {
 	public boolean disableFlightInertia = false;
 	public boolean disableChangingFovWhileFlying = false;
 	public boolean flyOnGroundInCreative = false;
-	public float flightSpeedMpCreativeDefault = 1F;
-	public float flightSpeedMpCreativeSprinting = 2F;
-	public float flightSpeedMpSpectatorDefault = 1F;
-	public float flightSpeedMpSpectatorSprinting = 2F;
-	public float flightVerticalBoostCreativeDefault = 0F;
-	public float flightVerticalBoostCreativeSprinting = 0F;
-	public float flightVerticalBoostSpectatorDefault = 0F;
-	public float flightVerticalBoostSpectatorSprinting = 0F;
+	public float flightHorizontalSpeedMpCreativeDefault = 1F;
+	public float flightHorizontalSpeedMpCreativeSprinting = 2F;
+	public float flightHorizontalSpeedMpSpectatorDefault = 1F;
+	public float flightHorizontalSpeedMpSpectatorSprinting = 2F;
+	public float flightVerticalSpeedMpCreativeDefault = 1F;
+	public float flightVerticalSpeedMpCreativeSprinting = 2F;
+	public float flightVerticalSpeedMpSpectatorDefault = 1F;
+	public float flightVerticalSpeedMpSpectatorSprinting = 2F;
 	
 	public final KeyBindingWithModifier keyToggleWalkForward = new KeyBindingWithModifier("key.bettercontrols.toggle_forward");
 	public final KeyBindingWithModifier keyToggleJump = new KeyBindingWithModifier("key.bettercontrols.toggle_jump");
diff --git a/src/main/java/chylex/bettercontrols/config/ConfigSerializer.java b/src/main/java/chylex/bettercontrols/config/ConfigSerializer.java
index e1f94ec..8328922 100644
--- a/src/main/java/chylex/bettercontrols/config/ConfigSerializer.java
+++ b/src/main/java/chylex/bettercontrols/config/ConfigSerializer.java
@@ -12,6 +12,7 @@ import com.google.gson.JsonSerializationContext;
 import com.google.gson.JsonSerializer;
 import com.google.gson.stream.JsonReader;
 import com.google.gson.stream.JsonWriter;
+import net.minecraft.util.Mth;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import java.io.FileNotFoundException;
@@ -45,14 +46,14 @@ final class ConfigSerializer implements JsonSerializer<BetterControlsConfig>, Js
 		Json.setBool(obj, "Flight.DisableInertia", cfg.disableFlightInertia);
 		Json.setBool(obj, "Flight.DisableChangingFOV", cfg.disableChangingFovWhileFlying);
 		Json.setBool(obj, "Flight.FlyOnGround.Creative", cfg.flyOnGroundInCreative);
-		Json.setFloat(obj, "Flight.SpeedMp.Creative.Default", cfg.flightSpeedMpCreativeDefault);
-		Json.setFloat(obj, "Flight.SpeedMp.Creative.Sprinting", cfg.flightSpeedMpCreativeSprinting);
-		Json.setFloat(obj, "Flight.SpeedMp.Spectator.Default", cfg.flightSpeedMpSpectatorDefault);
-		Json.setFloat(obj, "Flight.SpeedMp.Spectator.Sprinting", cfg.flightSpeedMpSpectatorSprinting);
-		Json.setFloat(obj, "Flight.VerticalBoost.Creative.Default", cfg.flightVerticalBoostCreativeDefault);
-		Json.setFloat(obj, "Flight.VerticalBoost.Creative.Sprinting", cfg.flightVerticalBoostCreativeSprinting);
-		Json.setFloat(obj, "Flight.VerticalBoost.Spectator.Default", cfg.flightVerticalBoostSpectatorDefault);
-		Json.setFloat(obj, "Flight.VerticalBoost.Spectator.Sprinting", cfg.flightVerticalBoostSpectatorSprinting);
+		Json.setFloat(obj, "Flight.SpeedMp.Creative.Default", cfg.flightHorizontalSpeedMpCreativeDefault);
+		Json.setFloat(obj, "Flight.SpeedMp.Creative.Sprinting", cfg.flightHorizontalSpeedMpCreativeSprinting);
+		Json.setFloat(obj, "Flight.SpeedMp.Spectator.Default", cfg.flightHorizontalSpeedMpSpectatorDefault);
+		Json.setFloat(obj, "Flight.SpeedMp.Spectator.Sprinting", cfg.flightHorizontalSpeedMpSpectatorSprinting);
+		Json.setFloat(obj, "Flight.VerticalSpeedMp.Creative.Default", cfg.flightVerticalSpeedMpCreativeDefault);
+		Json.setFloat(obj, "Flight.VerticalSpeedMp.Creative.Sprinting", cfg.flightVerticalSpeedMpCreativeSprinting);
+		Json.setFloat(obj, "Flight.VerticalSpeedMp.Spectator.Default", cfg.flightVerticalSpeedMpSpectatorDefault);
+		Json.setFloat(obj, "Flight.VerticalSpeedMp.Spectator.Sprinting", cfg.flightVerticalSpeedMpSpectatorSprinting);
 		
 		Json.writeKeyBinding(obj, "Misc.KeyToggleWalkForward", cfg.keyToggleWalkForward);
 		Json.writeKeyBinding(obj, "Misc.KeyToggleJump", cfg.keyToggleJump);
@@ -84,14 +85,14 @@ final class ConfigSerializer implements JsonSerializer<BetterControlsConfig>, Js
 		cfg.disableFlightInertia = Json.getBool(obj, "Flight.DisableInertia", cfg.disableFlightInertia);
 		cfg.disableChangingFovWhileFlying = Json.getBool(obj, "Flight.DisableChangingFOV", cfg.disableChangingFovWhileFlying);
 		cfg.flyOnGroundInCreative = Json.getBool(obj, "Flight.FlyOnGround.Creative", cfg.flyOnGroundInCreative);
-		cfg.flightSpeedMpCreativeDefault = Json.getFloat(obj, "Flight.SpeedMp.Creative.Default", cfg.flightSpeedMpCreativeDefault, 0.25F, 8F);
-		cfg.flightSpeedMpCreativeSprinting = Json.getFloat(obj, "Flight.SpeedMp.Creative.Sprinting", cfg.flightSpeedMpCreativeSprinting, 0.25F, 8F);
-		cfg.flightSpeedMpSpectatorDefault = Json.getFloat(obj, "Flight.SpeedMp.Spectator.Default", cfg.flightSpeedMpSpectatorDefault, 0.25F, 8F);
-		cfg.flightSpeedMpSpectatorSprinting = Json.getFloat(obj, "Flight.SpeedMp.Spectator.Sprinting", cfg.flightSpeedMpSpectatorSprinting, 0.25F, 8F);
-		cfg.flightVerticalBoostCreativeDefault = Json.getFloat(obj, "Flight.VerticalBoost.Creative.Default", cfg.flightVerticalBoostCreativeDefault, 0F, 3F);
-		cfg.flightVerticalBoostCreativeSprinting = Json.getFloat(obj, "Flight.VerticalBoost.Creative.Sprinting", cfg.flightVerticalBoostCreativeSprinting, 0F, 3F);
-		cfg.flightVerticalBoostSpectatorDefault = Json.getFloat(obj, "Flight.VerticalBoost.Spectator.Default", cfg.flightVerticalBoostSpectatorDefault, 0F, 3F);
-		cfg.flightVerticalBoostSpectatorSprinting = Json.getFloat(obj, "Flight.VerticalBoost.Spectator.Sprinting", cfg.flightVerticalBoostSpectatorSprinting, 0F, 3F);
+		cfg.flightHorizontalSpeedMpCreativeDefault = readHorizontalSpeedMultiplier(obj, "Flight.SpeedMp.Creative.Default", cfg.flightHorizontalSpeedMpCreativeDefault);
+		cfg.flightHorizontalSpeedMpCreativeSprinting = readHorizontalSpeedMultiplier(obj, "Flight.SpeedMp.Creative.Sprinting", cfg.flightHorizontalSpeedMpCreativeSprinting);
+		cfg.flightHorizontalSpeedMpSpectatorDefault = readHorizontalSpeedMultiplier(obj, "Flight.SpeedMp.Spectator.Default", cfg.flightHorizontalSpeedMpSpectatorDefault);
+		cfg.flightHorizontalSpeedMpSpectatorSprinting = readHorizontalSpeedMultiplier(obj, "Flight.SpeedMp.Spectator.Sprinting", cfg.flightHorizontalSpeedMpSpectatorSprinting);
+		cfg.flightVerticalSpeedMpCreativeDefault = readVerticalSpeedMultiplier(obj, "Flight.VerticalSpeedMp.Creative.Default", "Flight.VerticalBoost.Creative.Default", cfg.flightVerticalSpeedMpCreativeDefault);
+		cfg.flightVerticalSpeedMpCreativeSprinting = readVerticalSpeedMultiplier(obj, "Flight.VerticalSpeedMp.Creative.Sprinting", "Flight.VerticalBoost.Creative.Sprinting", cfg.flightVerticalSpeedMpCreativeSprinting);
+		cfg.flightVerticalSpeedMpSpectatorDefault = readVerticalSpeedMultiplier(obj, "Flight.VerticalSpeedMp.Spectator.Default", "Flight.VerticalBoost.Spectator.Default", cfg.flightVerticalSpeedMpSpectatorDefault);
+		cfg.flightVerticalSpeedMpSpectatorSprinting = readVerticalSpeedMultiplier(obj, "Flight.VerticalSpeedMp.Spectator.Sprinting", "Flight.VerticalBoost.Spectator.Sprinting", cfg.flightVerticalSpeedMpSpectatorSprinting);
 		
 		Json.readKeyBinding(obj, "Misc.KeyToggleWalkForward", cfg.keyToggleWalkForward);
 		Json.readKeyBinding(obj, "Misc.KeyToggleJump", cfg.keyToggleJump);
@@ -101,6 +102,35 @@ final class ConfigSerializer implements JsonSerializer<BetterControlsConfig>, Js
 		return cfg;
 	}
 	
+	private static float readHorizontalSpeedMultiplier(final JsonObject obj, final String key, final float defaultValue) {
+		return Json.getFloat(obj, key, defaultValue, 0.25F, 8F);
+	}
+	
+	private static float readVerticalSpeedMultiplier(final JsonObject obj, final String newKey, final String legacyBoostKey, final float defaultValue) {
+		if (obj.has(newKey)) {
+			return Json.getFloat(obj, newKey, defaultValue, 0.25F, 8F);
+		}
+		else if (obj.has(legacyBoostKey)) {
+			final float value = 1F + Json.getFloat(obj, legacyBoostKey, 0F, 0F, 3F);
+			// 1.25x, 1.75x, 2.5x, and 3.5x are not supported
+			if (Mth.equal(value, 1.25F) || Mth.equal(value, 1.75F)) {
+				return 1.5F;
+			}
+			else if (Mth.equal(value, 2.5F)) {
+				return 2F;
+			}
+			else if (Mth.equal(value, 3.5F)) {
+				return 3F;
+			}
+			else {
+				return value;
+			}
+		}
+		else {
+			return defaultValue;
+		}
+	}
+	
 	static void serialize(final Path path, final BetterControlsConfig config) {
 		try (final JsonWriter writer = gson.newJsonWriter(Files.newBufferedWriter(path, StandardCharsets.UTF_8))) {
 			gson.getAdapter(BetterControlsConfig.class).write(writer, config);
diff --git a/src/main/java/chylex/bettercontrols/gui/BetterControlsScreen.java b/src/main/java/chylex/bettercontrols/gui/BetterControlsScreen.java
index ece5111..fe0c09a 100644
--- a/src/main/java/chylex/bettercontrols/gui/BetterControlsScreen.java
+++ b/src/main/java/chylex/bettercontrols/gui/BetterControlsScreen.java
@@ -105,18 +105,6 @@ public class BetterControlsScreen extends OptionsSubScreen {
 			new Option<>(Float.valueOf(8.00F), text("8x"))
 		);
 		
-		final ImmutableList<Option<Float>> flightVerticalBoostOptions = ImmutableList.of(
-			new Option<>(Float.valueOf(0.00F), text("None")),
-			new Option<>(Float.valueOf(0.25F), text("+25%")),
-			new Option<>(Float.valueOf(0.50F), text("+50%")),
-			new Option<>(Float.valueOf(0.75F), text("+75%")),
-			new Option<>(Float.valueOf(1.00F), text("+100%")),
-			new Option<>(Float.valueOf(1.50F), text("+150%")),
-			new Option<>(Float.valueOf(2.00F), text("+200%")),
-			new Option<>(Float.valueOf(2.50F), text("+250%")),
-			new Option<>(Float.valueOf(3.00F), text("+300%"))
-		);
-		
 		generateKeyBindingWithModifierRow(y, elements, text("Toggle Flight (Creative)"), cfg.keyToggleFlight);
 		y += ROW_HEIGHT;
 		
@@ -137,24 +125,24 @@ public class BetterControlsScreen extends OptionsSubScreen {
 		elements.add(new TextWidget(col4(3), y, COL4_W - TEXT_PADDING_RIGHT, text("Spectator"), CENTER));
 		y += ROW_HEIGHT * 7 / 8;
 		
-		generateLeftSideText(y, elements, text("Speed Multiplier (Default)"));
-		elements.add(new DiscreteValueSliderWidget<>(col4(2), y, COL4_W, text("Speed Multiplier in Creative Mode"), flightSpeedOptions, cfg.flightSpeedMpCreativeDefault, value -> cfg.flightSpeedMpCreativeDefault = value));
-		elements.add(new DiscreteValueSliderWidget<>(col4(3), y, COL4_W, text("Speed Multiplier in Spectator Mode"), flightSpeedOptions, cfg.flightSpeedMpSpectatorDefault, value -> cfg.flightSpeedMpSpectatorDefault = value));
+		generateLeftSideText(y, elements, text("Horizontal Speed Multiplier (Default)"));
+		elements.add(new DiscreteValueSliderWidget<>(col4(2), y, COL4_W, text("Horizontal Speed Multiplier in Creative Mode"), flightSpeedOptions, cfg.flightHorizontalSpeedMpCreativeDefault, value -> cfg.flightHorizontalSpeedMpCreativeDefault = value));
+		elements.add(new DiscreteValueSliderWidget<>(col4(3), y, COL4_W, text("Horizontal Speed Multiplier in Spectator Mode"), flightSpeedOptions, cfg.flightHorizontalSpeedMpSpectatorDefault, value -> cfg.flightHorizontalSpeedMpSpectatorDefault = value));
 		y += ROW_HEIGHT;
 		
-		generateLeftSideText(y, elements, text("Speed Multiplier (Sprinting)"));
-		elements.add(new DiscreteValueSliderWidget<>(col4(2), y, COL4_W, text("Speed Multiplier when Sprinting in Creative Mode"), flightSpeedOptions, cfg.flightSpeedMpCreativeSprinting, value -> cfg.flightSpeedMpCreativeSprinting = value));
-		elements.add(new DiscreteValueSliderWidget<>(col4(3), y, COL4_W, text("Speed Multiplier when Sprinting in Spectator Mode"), flightSpeedOptions, cfg.flightSpeedMpSpectatorSprinting, value -> cfg.flightSpeedMpSpectatorSprinting = value));
+		generateLeftSideText(y, elements, text("Horizontal Speed Multiplier (Sprinting)"));
+		elements.add(new DiscreteValueSliderWidget<>(col4(2), y, COL4_W, text("Horizontal Speed Multiplier when Sprinting in Creative Mode"), flightSpeedOptions, cfg.flightHorizontalSpeedMpCreativeSprinting, value -> cfg.flightHorizontalSpeedMpCreativeSprinting = value));
+		elements.add(new DiscreteValueSliderWidget<>(col4(3), y, COL4_W, text("Horizontal Speed Multiplier when Sprinting in Spectator Mode"), flightSpeedOptions, cfg.flightHorizontalSpeedMpSpectatorSprinting, value -> cfg.flightHorizontalSpeedMpSpectatorSprinting = value));
 		y += ROW_HEIGHT;
 		
-		generateLeftSideText(y, elements, text("Vertical Speed Boost (Default)"));
-		elements.add(new DiscreteValueSliderWidget<>(col4(2), y, COL4_W, text("Vertical Speed Boost in Creative Mode"), flightVerticalBoostOptions, cfg.flightVerticalBoostCreativeDefault, value -> cfg.flightVerticalBoostCreativeDefault = value));
-		elements.add(new DiscreteValueSliderWidget<>(col4(3), y, COL4_W, text("Vertical Speed Boost in Spectator Mode"), flightVerticalBoostOptions, cfg.flightVerticalBoostSpectatorDefault, value -> cfg.flightVerticalBoostSpectatorDefault = value));
+		generateLeftSideText(y, elements, text("Vertical Speed Multiplier (Default)"));
+		elements.add(new DiscreteValueSliderWidget<>(col4(2), y, COL4_W, text("Vertical Speed Multiplier in Creative Mode"), flightSpeedOptions, cfg.flightVerticalSpeedMpCreativeDefault, value -> cfg.flightVerticalSpeedMpCreativeDefault = value));
+		elements.add(new DiscreteValueSliderWidget<>(col4(3), y, COL4_W, text("Vertical Speed Multiplier in Spectator Mode"), flightSpeedOptions, cfg.flightVerticalSpeedMpSpectatorDefault, value -> cfg.flightVerticalSpeedMpSpectatorDefault = value));
 		y += ROW_HEIGHT;
 		
-		generateLeftSideText(y, elements, text("Vertical Speed Boost (Sprinting)"));
-		elements.add(new DiscreteValueSliderWidget<>(col4(2), y, COL4_W, text("Vertical Speed Boost when Sprinting in Creative Mode"), flightVerticalBoostOptions, cfg.flightVerticalBoostCreativeSprinting, value -> cfg.flightVerticalBoostCreativeSprinting = value));
-		elements.add(new DiscreteValueSliderWidget<>(col4(3), y, COL4_W, text("Vertical Speed Boost when Sprinting in Spectator Mode"), flightVerticalBoostOptions, cfg.flightVerticalBoostSpectatorSprinting, value -> cfg.flightVerticalBoostSpectatorSprinting = value));
+		generateLeftSideText(y, elements, text("Vertical Speed Multiplier (Sprinting)"));
+		elements.add(new DiscreteValueSliderWidget<>(col4(2), y, COL4_W, text("Vertical Speed Multiplier when Sprinting in Creative Mode"), flightSpeedOptions, cfg.flightVerticalSpeedMpCreativeSprinting, value -> cfg.flightVerticalSpeedMpCreativeSprinting = value));
+		elements.add(new DiscreteValueSliderWidget<>(col4(3), y, COL4_W, text("Vertical Speed Multiplier when Sprinting in Spectator Mode"), flightSpeedOptions, cfg.flightVerticalSpeedMpSpectatorSprinting, value -> cfg.flightVerticalSpeedMpSpectatorSprinting = value));
 		y += ROW_HEIGHT;
 		
 		return y;
diff --git a/src/main/java/chylex/bettercontrols/mixin/HookClientPlayerVerticalFlightSpeed.java b/src/main/java/chylex/bettercontrols/mixin/HookClientPlayerVerticalFlightSpeed.java
index 03170d5..c2c285b 100644
--- a/src/main/java/chylex/bettercontrols/mixin/HookClientPlayerVerticalFlightSpeed.java
+++ b/src/main/java/chylex/bettercontrols/mixin/HookClientPlayerVerticalFlightSpeed.java
@@ -29,8 +29,6 @@ public abstract class HookClientPlayerVerticalFlightSpeed extends LivingEntity {
 	private float modifyVerticalFlightSpeed(final Abilities abilities) {
 		@SuppressWarnings("ConstantConditions")
 		final LocalPlayer me = (LocalPlayer)(Object)this;
-		
-		final float multiplier = 1F + FlightHelper.getVerticalSpeedBoost(me);
-		return abilities.getFlyingSpeed() * multiplier;
+		return abilities.getFlyingSpeed() * FlightHelper.getVerticalSpeedMultiplier(me);
 	}
 }
diff --git a/src/main/java/chylex/bettercontrols/player/FlightHelper.java b/src/main/java/chylex/bettercontrols/player/FlightHelper.java
index e8e4843..6905b03 100644
--- a/src/main/java/chylex/bettercontrols/player/FlightHelper.java
+++ b/src/main/java/chylex/bettercontrols/player/FlightHelper.java
@@ -29,25 +29,25 @@ public final class FlightHelper {
 	
 	public static float getHorizontalSpeedMultiplier(final LocalPlayer player) {
 		if (player.isCreative()) {
-			return isSprinting() ? cfg().flightSpeedMpCreativeSprinting : cfg().flightSpeedMpCreativeDefault;
+			return isSprinting() ? cfg().flightHorizontalSpeedMpCreativeSprinting : cfg().flightHorizontalSpeedMpCreativeDefault;
 		}
 		else if (player.isSpectator()) {
-			return isSprinting() ? cfg().flightSpeedMpSpectatorSprinting : cfg().flightSpeedMpSpectatorDefault;
+			return isSprinting() ? cfg().flightHorizontalSpeedMpSpectatorSprinting : cfg().flightHorizontalSpeedMpSpectatorDefault;
 		}
 		else {
 			return 1F;
 		}
 	}
 	
-	public static float getVerticalSpeedBoost(final LocalPlayer player) {
+	public static float getVerticalSpeedMultiplier(final LocalPlayer player) {
 		if (player.isCreative()) {
-			return isSprinting() ? cfg().flightVerticalBoostCreativeSprinting : cfg().flightVerticalBoostCreativeDefault;
+			return isSprinting() ? cfg().flightVerticalSpeedMpCreativeSprinting : cfg().flightVerticalSpeedMpCreativeDefault;
 		}
 		else if (player.isSpectator()) {
-			return isSprinting() ? cfg().flightVerticalBoostSpectatorSprinting : cfg().flightVerticalBoostSpectatorDefault;
+			return isSprinting() ? cfg().flightVerticalSpeedMpSpectatorSprinting : cfg().flightVerticalSpeedMpSpectatorDefault;
 		}
 		else {
-			return 0F;
+			return 1F;
 		}
 	}
 }