diff --git a/frontend/src/query_builder/QueryVisualization.jsx b/frontend/src/query_builder/QueryVisualization.jsx
index 5b870ff984cdb4274a595316857f9a3c3714144c..bdc9007a639b82f95ec3e04e3c33c172bb4b6572 100644
--- a/frontend/src/query_builder/QueryVisualization.jsx
+++ b/frontend/src/query_builder/QueryVisualization.jsx
@@ -22,8 +22,7 @@ export default class QueryVisualization extends Component {
         this.runQuery = this.runQuery.bind(this);
 
         this.state = {
-            lastRunCard: props.card,
-            lastRunQuery: JSON.stringify(props.card.dataset_query)
+            lastRunDatasetQuery: props.card.dataset_query
         };
     }
 
@@ -53,15 +52,14 @@ export default class QueryVisualization extends Component {
         // whenever we are told that we are running a query lets update our understanding of the "current" query
         if (nextProps.isRunning) {
             this.setState({
-                lastRunCard: nextProps.card,
-                lastRunQuery: JSON.stringify(nextProps.card.dataset_query)
+                lastRunDatasetQuery: nextProps.card.dataset_query
             });
         }
     }
 
     queryIsDirty() {
         // a query is considered dirty if ANY part of it has been changed
-        return (JSON.stringify(this.props.card.dataset_query) !== this.state.lastRunQuery);
+        return JSON.stringify(this.props.card.dataset_query) !== JSON.stringify(this.state.lastRunDatasetQuery);
     }
 
     isChartDisplay(display) {
@@ -313,11 +311,17 @@ export default class QueryVisualization extends Component {
                     );
 
                 } else {
+                    // we want to provide the visualization with a card containing the latest
+                    // "display", "visualization_settings", etc, (to ensure the correct visualization is shown)
+                    // BUT the last executed "dataset_query" (to ensure data matches the query)
+                    let card = {
+                        ...this.props.card,
+                        dataset_query: this.state.lastRunDatasetQuery
+                    };
                     viz = (
                         <Visualization
-                            card={this.state.lastRunCard}
+                            card={card}
                             data={this.props.result.data}
-
                             // Table:
                             setSortFn={this.props.setSortFn}
                             cellIsClickableFn={this.props.cellIsClickableFn}