Index: common/mptPathString.cpp
===================================================================
--- common/mptPathString.cpp	(revision 22162)
+++ common/mptPathString.cpp	(working copy)
@@ -55,7 +55,7 @@
 	using namespace path_literals;
 	using char_type = RawPathString::value_type;
 	mpt::PathString result = path;
-	if(path.empty())
+	if(path.empty() || relativeTo.empty())
 	{
 		return result;
 	}
@@ -79,7 +79,7 @@
 	using namespace path_literals;
 	using char_type = RawPathString::value_type;
 	mpt::PathString result = path;
-	if(path.empty())
+	if(path.empty() || relativeTo.empty())
 	{
 		return result;
 	}
Index: mptrack/AutoSaver.cpp
===================================================================
--- mptrack/AutoSaver.cpp	(revision 22162)
+++ mptrack/AutoSaver.cpp	(working copy)
@@ -141,7 +141,7 @@
 {
 	mpt::PathString name = GetBasePath(modDoc, true) + GetBaseName(modDoc);
 	const CString timeStamp = CTime::GetCurrentTime().Format(_T(".AutoSave.%Y%m%d.%H%M%S."));
-	name += mpt::PathString::FromCString(timeStamp);  //append backtup tag + timestamp
+	name += mpt::PathString::FromCString(timeStamp);  // Append backtup tag + timestamp
 	name += mpt::PathString::FromUnicode(modDoc.GetSoundFile().GetModSpecifications().GetFileExtension());
 	return name;
 }
@@ -167,8 +167,8 @@
 		case MOD_TYPE_MOD: success = sndFile.SaveMod(f); break;
 		case MOD_TYPE_S3M: success = sndFile.SaveS3M(f); break;
 		case MOD_TYPE_XM:  success = sndFile.SaveXM(f); break;
-		case MOD_TYPE_IT:  success = sndFile.SaveIT(f, fileName); break;
-		case MOD_TYPE_MPT: success = sndFile.SaveIT(f, fileName); break;
+		case MOD_TYPE_IT:  success = sndFile.SaveIT(f, GetUseOriginalPath() ? fileName : mpt::PathString{}); break;
+		case MOD_TYPE_MPT: success = sndFile.SaveIT(f, GetUseOriginalPath() ? fileName : mpt::PathString{}); break;
 		default:
 			// nothing
 			break;
Index: test/test.cpp
===================================================================
--- test/test.cpp	(revision 22162)
+++ test/test.cpp	(working copy)
@@ -2406,6 +2406,8 @@
 	VERIFY_EQUAL(mpt::RelativePathToAbsolute(P_("\\foo"), exePath), P_("C:\\foo"));
 	VERIFY_EQUAL(mpt::AbsolutePathToRelative(P_("\\\\server\\path\\file"), exePath), P_("\\\\server\\path\\file"));
 	VERIFY_EQUAL(mpt::RelativePathToAbsolute(P_("\\\\server\\path\\file"), exePath), P_("\\\\server\\path\\file"));
+	VERIFY_EQUAL(mpt::AbsolutePathToRelative(P_("C:\\OpenMPT"), mpt::PathString{}), P_("C:\\OpenMPT"));
+	VERIFY_EQUAL(mpt::RelativePathToAbsolute(P_("C:\\OpenMPT"), mpt::PathString{}), P_("C:\\OpenMPT"));
 #endif
 
 #ifdef MODPLUG_TRACKER
