diff --git a/data.cpp b/data.cpp
index 07e5c1f..22efb18 100755
--- a/data.cpp
+++ b/data.cpp
@@ -1149,7 +1149,7 @@
 
 	memset(mkdir_path, 0, sizeof(mkdir_path));
 	memset(settings_file, 0, sizeof(settings_file));
-	sprintf(mkdir_path, "%s%s", GetSettingsStoragePath().c_str(), GetStrValue(TW_RECOVERY_FOLDER_VAR).c_str());
+	sprintf(mkdir_path, "%s%s", GetSettingsStoragePath().c_str(), GetStrValue(TW_RECOVERY_NAME).c_str());
 	sprintf(settings_file, "%s/%s", mkdir_path, TW_SETTINGS_FILE);
 
 	if (!PartitionManager.Mount_Settings_Storage(false))
@@ -1194,7 +1194,6 @@
 
 void DataManager::LoadTWRPFolderInfo(void)
 {
-	string mainPath = GetCurrentStoragePath();
 	SetValue(TW_RECOVERY_FOLDER_VAR, TWFunc::Check_For_TwrpFolder());
-	mBackingFile = mainPath + GetStrValue(TW_RECOVERY_FOLDER_VAR) + '/' + TW_SETTINGS_FILE;
+	mBackingFile = GetSettingsStoragePath() + GetStrValue(TW_RECOVERY_NAME) + '/' + TW_SETTINGS_FILE;
 }
diff --git a/gui/action.cpp b/gui/action.cpp
index 61a3bed..d643daa 100755
--- a/gui/action.cpp
+++ b/gui/action.cpp
@@ -1138,7 +1138,7 @@
 			if (has_datamedia) {
 				ret_val = PartitionManager.Wipe_Media_From_Data();
 			} else {
-				ret_val = PartitionManager.Wipe_By_Path(DataManager::GetSettingsStoragePath());
+				ret_val = PartitionManager.Wipe_By_Path(DataManager::GetCurrentStoragePath());
 			}
 		} else if (arg == "EXTERNAL") {
 			string External_Path;
@@ -1188,7 +1188,7 @@
 							gui_msg(Msg(msg::kError, "unable_to_wipe=Unable to wipe {1}.")(wipe_path));
 							ret_val = false;
 							break;
-						} else if (wipe_path == DataManager::GetSettingsStoragePath()) {
+						} else if (wipe_path == DataManager::GetCurrentStoragePath()) {
 							arg = wipe_path;
 						}
 					} else {
@@ -2321,7 +2321,7 @@
 int GUIAction::applycustomtwrpfolder(string arg __unused)
 {
 	operation_start("ChangingTWRPFolder");
-	string storageFolder = DataManager::GetSettingsStoragePath();
+	string storageFolder = DataManager::GetCurrentStoragePath();
 	string newFolder = storageFolder + '/' + arg;
 	string newBackupFolder = newFolder + "/BACKUPS/" + DataManager::GetStrValue("device_id");
 	string prevFolder = storageFolder + DataManager::GetStrValue(TW_RECOVERY_FOLDER_VAR);
@@ -2345,7 +2345,6 @@
 	if (ret) {
 		DataManager::SetValue(TW_RECOVERY_FOLDER_VAR, '/' + arg);
 		DataManager::SetValue(TW_BACKUPS_FOLDER_VAR, newBackupFolder);
-		DataManager::mBackingFile = newFolder + '/' + TW_SETTINGS_FILE;
 	}
 	operation_end((int)!ret);
 	return 0;
diff --git a/partitionmanager.cpp b/partitionmanager.cpp
index 6f55065..a848300 100755
--- a/partitionmanager.cpp
+++ b/partitionmanager.cpp
@@ -475,9 +475,7 @@
 }
 
 void TWPartitionManager::Setup_Settings_Storage_Partition(TWPartition* Part) {
-	DataManager::SetValue("tw_settings_path", Part->Storage_Path);
 	DataManager::SetValue("tw_storage_path", Part->Storage_Path);
-	LOGINFO("Settings storage is '%s'\n", Part->Storage_Path.c_str());
 }
 
 void TWPartitionManager::Setup_Android_Secure_Location(TWPartition* Part) {
@@ -1811,7 +1809,7 @@
 		}
 		dat->Symlink_Path = dat->Storage_Path;
 		DataManager::SetValue("tw_storage_path", dat->Symlink_Path);
-		DataManager::SetValue("tw_settings_path", dat->Symlink_Path);
+		DataManager::SetValue("tw_settings_path", TW_STORAGE_PATH);
 		LOGINFO("New storage path after decryption: %s\n", dat->Storage_Path.c_str());
 
 		DataManager::LoadTWRPFolderInfo();
diff --git a/variables.h b/variables.h
index e11aa26..7d28f61 100755
--- a/variables.h
+++ b/variables.h
@@ -22,6 +22,7 @@
 #define TW_SETTINGS_FILE            ".twrps"
 #define TW_RECOVERY_NAME            "TWRP"
 #define TW_DEFAULT_RECOVERY_FOLDER  "/" TW_RECOVERY_NAME
+#define TW_STORAGE_PATH             "/data/recovery/"
 #define TW_USE_COMPRESSION_VAR      "tw_use_compression"
 #define TW_FILENAME                 "tw_filename"
 #define TW_ZIP_INDEX                "tw_zip_index"
