diff --git a/frontend/src/query_builder/QueryVisualization.jsx b/frontend/src/query_builder/QueryVisualization.jsx
index cc9178e1b20c72853fcda4f103ae6e75865ce631..5bc3d0728598d9e702b59fc5625b1a28f458d0f2 100644
--- a/frontend/src/query_builder/QueryVisualization.jsx
+++ b/frontend/src/query_builder/QueryVisualization.jsx
@@ -22,7 +22,8 @@ export default class QueryVisualization extends Component {
         this.runQuery = this.runQuery.bind(this);
 
         this.state = {
-            origQuery: JSON.stringify(props.card.dataset_query)
+            lastRunCard: props.card,
+            lastRunQuery: JSON.stringify(props.card.dataset_query)
         };
     }
 
@@ -52,14 +53,15 @@ 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({
-                origQuery: JSON.stringify(nextProps.card.dataset_query)
+                lastRunCard: nextProps.card,
+                lastRunQuery: JSON.stringify(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.origQuery);
+        return (JSON.stringify(this.props.card.dataset_query) !== this.state.lastRunQuery);
     }
 
     isChartDisplay(display) {
@@ -313,7 +315,7 @@ export default class QueryVisualization extends Component {
                 } else {
                     viz = (
                         <Visualization
-                            card={this.props.card}
+                            card={this.state.lastRunCard}
                             data={this.props.result.data}
 
                             // Table: