diff --git a/source/core/gameinput.cpp b/source/core/gameinput.cpp
index aba636e72..431b8c720 100644
--- a/source/core/gameinput.cpp
+++ b/source/core/gameinput.cpp
@@ -133,8 +133,8 @@ void processMovement(InputPacket* currInput, InputPacket* inputBuffer, ControlIn
 
 	// process remaining controller input.
 	currInput->horz -= scaleAdjust * hidInput->dpitch * hidspeed;
-	currInput->svel -= xs_CRoundToInt(scaleAdjust * hidInput->dx * keymove * cntrlvelscale);
-	currInput->fvel -= xs_CRoundToInt(scaleAdjust * hidInput->dz * keymove * cntrlvelscale);
+	currInput->svel += xs_CRoundToInt(scaleAdjust * hidInput->dx * keymove * cntrlvelscale);
+	currInput->fvel += xs_CRoundToInt(scaleAdjust * hidInput->dz * keymove * cntrlvelscale);
 
 	// process keyboard turning keys.
 	if (buttonMap.ButtonDown(gamefunc_Strafe) && allowstrafe)
diff --git a/source/core/inputstate.cpp b/source/core/inputstate.cpp
index ce88497f4..1fa03b2c9 100644
--- a/source/core/inputstate.cpp
+++ b/source/core/inputstate.cpp
@@ -182,8 +182,8 @@ ControlInfo CONTROL_GetInput()
 		I_GetAxes(joyaxes);
 
 		hidInput.dyaw += -joyaxes[JOYAXIS_Yaw];
-		hidInput.dx += -joyaxes[JOYAXIS_Side] * .5f;
-		hidInput.dz += -joyaxes[JOYAXIS_Forward] * .5f;
+		hidInput.dx += joyaxes[JOYAXIS_Side] * .5f;
+		hidInput.dz += joyaxes[JOYAXIS_Forward] * .5f;
 		hidInput.dpitch += -joyaxes[JOYAXIS_Pitch];
 	}