diff --git a/frontend/src/metabase/visualizations/lib/settings/visualization.js b/frontend/src/metabase/visualizations/lib/settings/visualization.js
index 6f03738617743dd81f26be7324d64c770776773c..75fe135f2f7272e194bfdf0e7d4e4cc7be8b85fd 100644
--- a/frontend/src/metabase/visualizations/lib/settings/visualization.js
+++ b/frontend/src/metabase/visualizations/lib/settings/visualization.js
@@ -1,4 +1,5 @@
 import { t } from "ttag";
+import { assocIn } from "icepick";
 import { getVisualizationRaw } from "metabase/visualizations";
 import { isVirtualDashCard } from "metabase/dashboard/utils";
 import { normalizeFieldRef } from "metabase-lib/queries/utils/dataset";
@@ -64,12 +65,14 @@ function normalizeColumnSettings(columnSettings) {
 }
 
 export function getStoredSettingsForSeries(series) {
-  const storedSettings =
+  let storedSettings =
     (series && series[0] && series[0].card.visualization_settings) || {};
   if (storedSettings.column_settings) {
     // normalize any settings stored under old style keys: [ref, [fk->, 1, 2]]
-    storedSettings.column_settings = normalizeColumnSettings(
-      storedSettings.column_settings,
+    storedSettings = assocIn(
+      storedSettings,
+      ["column_settings"],
+      normalizeColumnSettings(storedSettings.column_settings),
     );
   }
   return storedSettings;
diff --git a/frontend/src/metabase/visualizations/lib/settings/visualization.unit.spec.js b/frontend/src/metabase/visualizations/lib/settings/visualization.unit.spec.js
index 4ceb03d7600c497786983350d4f5b98223e37114..32b723198e7d14a7c0830b200c34ce1e17287023 100644
--- a/frontend/src/metabase/visualizations/lib/settings/visualization.unit.spec.js
+++ b/frontend/src/metabase/visualizations/lib/settings/visualization.unit.spec.js
@@ -1,3 +1,4 @@
+import icepick from "icepick";
 // NOTE: need to load visualizations first for getSettings to work
 import "metabase/visualizations/index";
 
@@ -164,6 +165,30 @@ describe("visualization_settings", () => {
       ]);
       expect(settings).toEqual({ foo: "bar" });
     });
+    it("should work correctly with frozen objects", () => {
+      const settings = getStoredSettingsForSeries(
+        icepick.freeze([
+          {
+            card: {
+              visualization_settings: {
+                column_settings: {
+                  '["name","A"]': {
+                    number_style: "currency",
+                  },
+                },
+              },
+            },
+          },
+        ]),
+      );
+      expect(settings).toEqual({
+        column_settings: {
+          '["name","A"]': {
+            number_style: "currency",
+          },
+        },
+      });
+    });
   });
   describe("table.cell_column", () => {
     it("should pick the first metric column", () => {