diff --git a/analyzer/analytics/analyticsview.cpp b/analyzer/analytics/analyticsview.cpp
index acc556fd5cd73ccdb55d0a37434f878fea023593..e0df60fa5a5a86ee9726341c0bc75be9b3307416 100644
--- a/analyzer/analytics/analyticsview.cpp
+++ b/analyzer/analytics/analyticsview.cpp
@@ -116,9 +116,9 @@ void AnalyticsView::setRESTClient(RESTClient* client)
 
 void AnalyticsView::setProduct(const Product& product)
 {
+    m_chart->setModel(nullptr);
     m_dataModel->setProduct(product);
 
-    m_chart->setModel(nullptr);
     ui->chartType->clear();
     m_aggregatedDataModel->clear();
     qDeleteAll(m_aggregationModels);
diff --git a/analyzer/chart.cpp b/analyzer/chart.cpp
index 419719e3ef2eeb3d564bddf4d45d04641c354a53..bd7f7a57186375cb17ba9a8827732d75af595a9d 100644
--- a/analyzer/chart.cpp
+++ b/analyzer/chart.cpp
@@ -70,8 +70,10 @@ void Chart::setModel(QAbstractItemModel* model)
         disconnect(m_model, &QAbstractItemModel::modelReset, this, &Chart::modelReset);
 
     m_model = model;
-    if (!model)
+    if (!model) {
+        m_chart->removeAllSeries();
         return;
+    }
 
     connect(m_model, &QAbstractItemModel::modelReset, this, &Chart::modelReset);
     modelReset();
@@ -111,7 +113,7 @@ void Chart::modelReset()
     } else {
         QLineSeries *prevSeries = nullptr;
         for (int i = 1; i < colCount; ++i) {
-            auto series = new QLineSeries(this);
+            auto series = new QLineSeries;
 
             auto mapper = new QVXYModelMapper(series);
             mapper->setModel(m_model);
@@ -121,6 +123,7 @@ void Chart::modelReset()
             mapper->setSeries(series);
 
             auto areaSeries = new QAreaSeries(series, prevSeries);
+            series->setParent(areaSeries); // otherwise series isn't deleted by removeAllSeries!
             areaSeries->setName(m_model->headerData(i, Qt::Horizontal).toString().toHtmlEscaped());
             m_chart->addSeries(areaSeries);