diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index b5ad102a2884f7a9e02ac527b40ac8d4f086f3e4..471ee8249b9945a7e39474d7079ad5844321c664 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -3458,10 +3458,15 @@ void LLPanelPreferenceControls::cancel()
         if (mConflictHandler[i].hasUnsavedChanges())
         {
             mConflictHandler[i].clear();
-        }
+			if (mEditingMode == i)
+			{
+				// cancel() can be called either when preferences floater closes
+				// or when child floater closes (like advanced graphical settings)
+				// in which case we need to clear and repopulate table
+				regenerateControls();
+			}
+		}
     }
-    pControlsTable->clearRows();
-    pControlsTable->clearColumns();
 }
 
 void LLPanelPreferenceControls::saveSettings()