diff --git a/app/mainwindow.cpp b/app/mainwindow.cpp
index 121ba39..a71d263 100644
--- a/app/mainwindow.cpp
+++ b/app/mainwindow.cpp
@@ -177,21 +177,18 @@ void MainWindow::SetPanel(Panel *panel, si::Object *chunk)
   }
 }
 
-void MainWindow::UpdateWindowTitleFlag(bool isFileModified)
+void MainWindow::UpdateWindowTitle(QString filename)
+{
+  TrimOffDirectory(filename);
+  setWindowTitle(QStringLiteral("%1 - %2").arg(QApplication::applicationName(), filename));
+}
+
+void MainWindow::AppendModifiedTitleIndicator()
 {
   QString title = windowTitle();
+  title.append("*");
 
-  if (isFileModified) {
-    if (!title.endsWith("*")) {
-      title.append("*");
-      setWindowTitle(title);
-    }
-  } else {
-    if (title.endsWith("*")) {
-      // trim off asterisk
-      setWindowTitle(title.left(title.length() - 1));
-    }
-  }
+  setWindowTitle(title);
 }
 
 void MainWindow::ExtractObject(si::Object *obj)
@@ -230,7 +227,7 @@ void MainWindow::ReplaceObject(si::Object *obj)
 #endif
         )) {
       static_cast<Panel*>(config_stack_->currentWidget())->ResetData();
-      UpdateWindowTitleFlag(true);
+      AppendModifiedTitleIndicator();
     } else {
       QMessageBox::critical(this, QString(), tr("Failed to open to file \"%1\".").arg(s));
     }
@@ -309,6 +306,8 @@ void MainWindow::NewFile()
   model_.SetCore(nullptr);
   interleaf_.Clear();
   model_.SetCore(&interleaf_);
+
+  UpdateWindowTitle(tr("UNTITLED.SI"));
 }
 
 void MainWindow::OpenFile()
@@ -316,9 +315,7 @@ void MainWindow::OpenFile()
   QString s = GetOpenFileName();
   if (!s.isEmpty()) {
     OpenFilename(s);
-    TrimOffDirectory(s);
-
-    setWindowTitle(QStringLiteral("%1 - %2").arg(QApplication::applicationName(), s));
+    UpdateWindowTitle(s);
   }
 }
 
@@ -336,7 +333,7 @@ bool MainWindow::SaveFile()
     );
 
     if (r == Interleaf::ERROR_SUCCESS) {
-      UpdateWindowTitleFlag(false);
+      UpdateWindowTitle(current_filename_);
       return true;
     } else {
       QMessageBox::critical(this, QString(), tr("Failed to write SI file: %1").arg(r));
diff --git a/app/mainwindow.h b/app/mainwindow.h
index 2ee9da5..08098ed 100644
--- a/app/mainwindow.h
+++ b/app/mainwindow.h
@@ -29,7 +29,6 @@ private:
   void InitializeMenuBar();
 
   void SetPanel(Panel *panel, si::Object *chunk);
-  void UpdateWindowTitleFlag(bool isFileModified);
 
   void ExtractObject(si::Object *obj);
   void ReplaceObject(si::Object *obj);
@@ -42,6 +41,9 @@ private:
 
   void TrimOffDirectory(QString &s);
 
+  void UpdateWindowTitle(QString filename);
+  void AppendModifiedTitleIndicator();
+
   static const QString kFileFilter;
 
   QStackedWidget *config_stack_;