diff --git a/timeseriesviewer/plotstyling.py b/timeseriesviewer/plotstyling.py
index f20b2b2be794ab05f0f9a010068173ae93e7e4c6..9464a5620436e4d5112783f14d9488e4a039d545 100644
--- a/timeseriesviewer/plotstyling.py
+++ b/timeseriesviewer/plotstyling.py
@@ -86,7 +86,20 @@ class PlotStyle(QObject):
         p.end()
         return QIcon(pm)
 
+    def __reduce_ex__(self, protocol):
 
+        return self.__class__, (), self.__getstate__()
+
+    def __getstate__(self):
+        result = dict()
+        for k, i in self.__dict__.items():
+            t = type(i)
+            if t in [str, int, float, QColor]:
+                result[k] = i
+        return result
+
+    def __setstate__(self, state):
+        self.__dict__.update(state)
 
 class PlotStyleWidget(QWidget, loadUi('plotstylewidget.ui')):
     sigPlotStyleChanged = pyqtSignal(PlotStyle)
@@ -330,6 +343,11 @@ if __name__ == '__main__':
 
     from timeseriesviewer import sandbox
     qgsApp = sandbox.initQgisEnvironment()
+
+    import pickle
+    s1 = PlotStyle()
+    s2 = pickle.loads(pickle.dumps(s1))
+    assert s1 == s2
     btn = PlotStyleButton()
     btn.show()
     qgsApp.exec_()