diff --git a/gui/objects.hpp b/gui/objects.hpp
index c286567..5eae919 100644
--- a/gui/objects.hpp
+++ b/gui/objects.hpp
@@ -728,7 +728,7 @@
 
 protected:
 	void MatchList();
-	void SetStoragePosition();
+	void SetPosition();
 
 protected:
 	std::vector<PartitionList> mList;
diff --git a/gui/partitionlist.cpp b/gui/partitionlist.cpp
index e9c1652..97f6e4e 100644
--- a/gui/partitionlist.cpp
+++ b/gui/partitionlist.cpp
@@ -130,7 +130,7 @@
 		SetVisibleListLocation(0);
 		updateList = false;
 		mUpdate = 1;
-		if (ListType == "backup")
+		if (ListType == "backup" || ListType == "flashimg")
 			MatchList();
 	}
 
@@ -154,7 +154,7 @@
 	{
 		if (ListType == "storage") {
 			currentValue = value;
-			SetStoragePosition();
+			SetPosition();
 		} else if (ListType == "backup") {
 			MatchList();
 		} else if (ListType == "restore") {
@@ -172,9 +172,9 @@
 {
 	GUIScrollList::SetPageFocus(inFocus);
 	if (inFocus) {
-		if (ListType == "storage") {
+		if (ListType == "storage" || ListType == "flashimg") {
 			DataManager::GetValue(mVariable, currentValue);
-			SetStoragePosition();
+			SetPosition();
 		}
 		updateList = true;
 		mUpdate = 1;
@@ -199,16 +199,16 @@
 	}
 }
 
-void GUIPartitionList::SetStoragePosition() {
+void GUIPartitionList::SetPosition() {
 	int listSize = mList.size();
 
+	SetVisibleListLocation(0);
 	for (int i = 0; i < listSize; i++) {
 		if (mList.at(i).Mount_Point == currentValue) {
 			mList.at(i).selected = 1;
 			SetVisibleListLocation(i);
 		} else {
 			mList.at(i).selected = 0;
-			SetVisibleListLocation(0);
 		}
 	}
 }
