diff --git a/src/p_setup.c b/src/p_setup.c
index ea099e13e1e486a764ca0be1f4ef8d02c0da538b..89b419953dbf3859dfdfe15da3532442dcd0b730 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -5552,13 +5552,13 @@ static void P_ConvertBinaryLinedefTypes(void)
 				lines[i].args[1] = 0;
 			if (lines[i].flags & ML_NOSKEW)
 			{
-				lines[i].args[2] = lines[i].dx >> (FRACBITS + SCROLL_SHIFT);
-				lines[i].args[3] = lines[i].dy >> (FRACBITS + SCROLL_SHIFT);
+				lines[i].args[2] = sides[lines[i].sidenum[0]].textureoffset >> (FRACBITS - SCROLL_SHIFT);
+				lines[i].args[3] = sides[lines[i].sidenum[0]].rowoffset >> (FRACBITS - SCROLL_SHIFT);
 			}
 			else
 			{
-				lines[i].args[2] = sides[lines[i].sidenum[0]].textureoffset >> FRACBITS;
-				lines[i].args[3] = sides[lines[i].sidenum[0]].rowoffset >> FRACBITS;
+				lines[i].args[2] = lines[i].dx >> FRACBITS;
+				lines[i].args[3] = lines[i].dy >> FRACBITS;
 			}
 			lines[i].args[4] = lines[i].special - 502;
 			lines[i].special = 502;
diff --git a/src/p_spec.c b/src/p_spec.c
index 69e1e3925b35a9e8004b74b1130db6dd0a265592..c000960b5163f0fff2de1ea14718d6b0095b9480 100644
--- a/src/p_spec.c
+++ b/src/p_spec.c
@@ -7563,9 +7563,9 @@ static void P_SpawnScrollers(void)
 					if (s != (INT32)i)
 					{
 						if (l->args[1] != TMSD_BACK)
-							Add_Scroller(sc_side, l->args[2] << FRACBITS, l->args[3] << FRACBITS, control, lines[s].sidenum[0], accel, 0);
+							Add_Scroller(sc_side, l->args[2] << (FRACBITS - SCROLL_SHIFT), l->args[3] << (FRACBITS - SCROLL_SHIFT), control, lines[s].sidenum[0], accel, 0);
 						if (l->args[1] != TMSD_FRONT && lines[s].sidenum[1] != 0xffff)
-							Add_Scroller(sc_side, l->args[2] << FRACBITS, l->args[3] << FRACBITS, control, lines[s].sidenum[1], accel, 0);
+							Add_Scroller(sc_side, l->args[2] << (FRACBITS - SCROLL_SHIFT), l->args[3] << (FRACBITS - SCROLL_SHIFT), control, lines[s].sidenum[1], accel, 0);
 					}
 				break;
 			}