diff --git a/exec/load/dd_lightbar_menu.js b/exec/load/dd_lightbar_menu.js
index f46e304949c87416dc2335d91c68c6490f1b82ee..704013e28a06c4c285014cd62fbc701d75c90efe 100644
--- a/exec/load/dd_lightbar_menu.js
+++ b/exec/load/dd_lightbar_menu.js
@@ -3134,8 +3134,19 @@ function DDLightbarMenu_UpdateScrollbar(pNewStartRow, pOldStartRow, pNumSolidBlo
 	// then the solid block section has moved down; if the diff is negative, the
 	// solid block section has moved up.
 	var solidBlockStartRowDiff = pNewStartRow - pOldStartRow;
+	// Calculate the 'old' last row & new last row, but don't let them go over
+	// the bottom row of the menu
 	var oldLastRow = pOldStartRow + numSolidBlocks - 1;
+	const maxY = this.pos.y + this.size.height - 1;
+	if (oldLastRow > maxY)
+		oldLastRow = maxY;
+	else if (oldLastRow < this.pos.y)
+		oldLastRow = this.pos.y;
 	var newLastRow = pNewStartRow + numSolidBlocks - 1;
+	if (newLastRow > maxY)
+		newLastRow = maxY;
+	else if (newLastRow < this.pos.y)
+		newLastRow = this.pos.y;
 	if (solidBlockStartRowDiff > 0)
 	{
 		// The solid block section has moved down