diff --git a/src/r_fps.c b/src/r_fps.c
index 008ed07d52a4980eeb5cbdbfd7367977e3567cb7..10e3cc10b7a771baf520cfcac8389bee24012354 100644
--- a/src/r_fps.c
+++ b/src/r_fps.c
@@ -284,8 +284,11 @@ void R_InterpolateMobjState(mobj_t *mobj, fixed_t frac, interpmobjstate_t *out)
 	out->scale = mobj->resetinterp ? mobj->scale : R_LerpFixed(mobj->old_scale, mobj->scale, frac);
 	out->spritexscale = mobj->resetinterp ? mobj->spritexscale : R_LerpFixed(mobj->old_spritexscale, mobj->spritexscale, frac);
 	out->spriteyscale = mobj->resetinterp ? mobj->spriteyscale : R_LerpFixed(mobj->old_spriteyscale, mobj->spriteyscale, frac);
-	out->spritexoffset = mobj->resetinterp ? mobj->spritexoffset : R_LerpFixed(mobj->old_spritexoffset, mobj->spritexoffset, frac);
-	out->spriteyoffset = mobj->resetinterp ? mobj->spriteyoffset : R_LerpFixed(mobj->old_spriteyoffset, mobj->spriteyoffset, frac);
+
+	// Sprite offsets are not interpolated until we have a way to interpolate them explicitly in Lua.
+	// It seems existing mods visually break more often than not if it is interpolated.
+	out->spritexoffset = mobj->spritexoffset;
+	out->spriteyoffset = mobj->spriteyoffset;
 
 	out->subsector = R_PointInSubsector(out->x, out->y);