diff --git a/e2e/test/scenarios/question-reproductions/reproductions-3.cy.spec.js b/e2e/test/scenarios/question-reproductions/reproductions-3.cy.spec.js
index 5b48ac298c32ca3441449a042d8a332199755475..97594181b359523657b5567a996a0b3bf3ac4df0 100644
--- a/e2e/test/scenarios/question-reproductions/reproductions-3.cy.spec.js
+++ b/e2e/test/scenarios/question-reproductions/reproductions-3.cy.spec.js
@@ -2079,6 +2079,52 @@ describe("issue 45452", () => {
   });
 });
 
+describe("issue 41612", () => {
+  beforeEach(() => {
+    restore();
+    cy.signInAsAdmin();
+    cy.intercept("POST", "/api/card").as("createQuestion");
+  });
+
+  it("should not ignore chart viz settings when viewing raw results as a table (metabase#41612)", () => {
+    visitQuestionAdhoc(
+      {
+        display: "line",
+        dataset_query: {
+          type: "query",
+          database: SAMPLE_DB_ID,
+          query: {
+            aggregation: [["count"]],
+            breakout: [
+              [
+                "field",
+                ORDERS.CREATED_AT,
+                { "base-type": "type/DateTime", "temporal-unit": "month" },
+              ],
+            ],
+            "source-table": ORDERS_ID,
+          },
+        },
+      },
+      { visitQuestion: true },
+    );
+
+    queryBuilderMain().findByLabelText("Switch to data").click();
+    queryBuilderHeader().button("Save").click();
+    modal().button("Save").click();
+
+    cy.wait("@createQuestion").then(xhr => {
+      const card = xhr.request.body;
+      expect(card.visualization_settings["graph.metrics"]).to.deep.equal([
+        "count",
+      ]);
+      expect(card.visualization_settings["graph.dimensions"]).to.deep.equal([
+        "CREATED_AT",
+      ]);
+    });
+  });
+});
+
 function expectNoScrollbarContainer(element) {
   const hasScrollbarContainer =
     element.scrollHeight <= element.clientHeight &&
diff --git a/enterprise/frontend/src/embedding-sdk/lib/interactive-question/run-question-on-query-change.ts b/enterprise/frontend/src/embedding-sdk/lib/interactive-question/run-question-on-query-change.ts
index b2aa3344e0e37717ee423fb8976b730f739fa4df..af661345910b62e7c4bb486ec3cd0906b2085461 100644
--- a/enterprise/frontend/src/embedding-sdk/lib/interactive-question/run-question-on-query-change.ts
+++ b/enterprise/frontend/src/embedding-sdk/lib/interactive-question/run-question-on-query-change.ts
@@ -47,7 +47,6 @@ export const runQuestionOnQueryChangeSdk =
       question: nextQuestion,
       queryResult: queryResults?.[0],
       datasetQuery: undefined,
-      showRawTable: false,
     });
 
     const questionPivotResult = computeQuestionPivotTable({
diff --git a/frontend/src/metabase/query_builder/selectors.js b/frontend/src/metabase/query_builder/selectors.js
index 8a7abfa5b77e0d6412b114efb3f74dc6cf5db6ed..90d61f2cb050938e703971721e53963181d5b7ae 100644
--- a/frontend/src/metabase/query_builder/selectors.js
+++ b/frontend/src/metabase/query_builder/selectors.js
@@ -713,14 +713,35 @@ export const getShouldShowUnsavedChangesWarning = createSelector(
  * Returns the card and query results data in a format that `Visualization.jsx` expects
  */
 export const getRawSeries = createSelector(
-  [getQuestion, getQueryResults, getLastRunDatasetQuery, getIsShowingRawTable],
-  (question, results, lastRunDatasetQuery, isShowingRawTable) => {
-    return createRawSeries({
+  [
+    getQuestion,
+    getFirstQueryResult,
+    getLastRunDatasetQuery,
+    getIsShowingRawTable,
+  ],
+  (question, queryResult, lastRunDatasetQuery, isShowingRawTable) => {
+    const rawSeries = createRawSeries({
       question,
-      queryResult: results?.[0],
+      queryResult,
       datasetQuery: lastRunDatasetQuery,
-      showRawTable: isShowingRawTable,
     });
+    if (isShowingRawTable && rawSeries?.length > 0) {
+      const [{ card, data }] = rawSeries;
+      return [
+        {
+          card: {
+            ...card,
+            display: "table",
+            visualization_settings: {
+              ...card.visualization_settings,
+              "table.pivot": false,
+            },
+          },
+          data,
+        },
+      ];
+    }
+    return rawSeries;
   },
 );
 
@@ -1103,7 +1124,16 @@ export function getEmbeddedParameterVisibility(state, slug) {
 }
 
 export const getSubmittableQuestion = (state, question) => {
-  const series = getTransformedSeries(state);
+  const rawSeries = createRawSeries({
+    question: getQuestion(state),
+    queryResult: getFirstQueryResult(state),
+    datasetQuery: getLastRunDatasetQuery(state),
+  });
+
+  const series = rawSeries
+    ? getVisualizationTransformed(extractRemappings(rawSeries)).series
+    : null;
+
   const resultsMetadata = getResultsMetadata(state);
   const isResultDirty = getIsResultDirty(state);
 
diff --git a/frontend/src/metabase/query_builder/utils.ts b/frontend/src/metabase/query_builder/utils.ts
index 8104861fbd33749f045e9c5bfa4fde69f62ed0f7..52d4904b9b07f6fc48233cee432ca98dc98e50a1 100644
--- a/frontend/src/metabase/query_builder/utils.ts
+++ b/frontend/src/metabase/query_builder/utils.ts
@@ -149,17 +149,8 @@ export const createRawSeries = (options: {
   question: Question;
   queryResult: any;
   datasetQuery?: any;
-  showRawTable?: boolean;
 }): Series => {
-  const { question, queryResult, datasetQuery, showRawTable = false } = options;
-
-  let display = question && question.display();
-  let settings = question && question.settings();
-
-  if (showRawTable) {
-    display = "table";
-    settings = { "table.pivot": false };
-  }
+  const { question, queryResult, datasetQuery } = options;
 
   // we want to provide the visualization with a card containing the latest
   // "display", "visualization_settings", etc, (to ensure the correct visualization is shown)
@@ -169,9 +160,6 @@ export const createRawSeries = (options: {
       {
         card: {
           ...question.card(),
-          display: display,
-          visualization_settings: settings,
-
           ...(datasetQuery && { dataset_query: datasetQuery }),
         },
         data: queryResult && queryResult.data,