diff --git a/src/samplepack.cpp b/src/samplepack.cpp
--- a/src/samplepack.cpp
+++ b/src/samplepack.cpp
@@ -17,6 +17,7 @@
   along with serialplot.  If not, see .
 */
 
+#include 
 #include 
 
 #include "samplepack.h"
@@ -39,6 +40,15 @@ SamplePack::SamplePack(unsigned ns, unsi
     }
 }
 
+SamplePack::SamplePack(const SamplePack& other) :
+    SamplePack(other.numSamples(), other.numChannels(), other.hasX())
+{
+    size_t dataSize = sizeof(double) * numSamples();
+    if (hasX())
+        memcpy(xData(), other.xData(), dataSize);
+    memcpy(_yData, other._yData, dataSize * numChannels());
+}
+
 SamplePack::~SamplePack()
 {
     delete[] _yData;