diff --git a/madarrays/mad_array.py b/madarrays/mad_array.py
index 2ea639960a22f5c1c6f65d02af10df20b86c2433..deba53d6f0d19989e4a88006c91ec1f93fa0a582 100644
--- a/madarrays/mad_array.py
+++ b/madarrays/mad_array.py
@@ -45,8 +45,6 @@
 .. moduleauthor:: Valentin Emiya
 .. moduleauthor:: Florent Jaillet
 """
-import warnings
-
 import numpy as np
 
 
diff --git a/madarrays/tests/test_waveform.py b/madarrays/tests/test_waveform.py
index ffc2bcc65f25188b64871c618bea10573d4276f2..d8804b684c297c6bae74c453c260444e5271d342 100644
--- a/madarrays/tests/test_waveform.py
+++ b/madarrays/tests/test_waveform.py
@@ -217,6 +217,22 @@ class TestWaveform:
         w = Waveform(self.x_mono, mask=self.m_mono, fs=self.fs)
         w2 = Waveform(w)
         assert w2.fs == self.fs
+        np.testing.assert_array_equal(w._mask, w2._mask)
+
+    def test_init_from_madarray(self):
+
+        w = MadArray(self.x_mono, mask=self.m_mono)
+        w2 = Waveform(w)
+        np.testing.assert_array_equal(w2._mask, w._mask)
+
+        w = MadArray(self.x_mono, mask_magnitude=self.m_mono)
+        match = ('Construction of a Waveform from a MadArray with '
+                 'complex masking: the original masking data are '
+                 'discarded and a boolean mask set to False is used.')
+        with pytest.warns(UserWarning, match=match):
+            w2 = Waveform(w)
+            np.testing.assert_array_equal(
+                w2._mask, np.zeros_like(w2, dtype=np.bool))
 
     def test_resample(self):
 
diff --git a/madarrays/waveform.py b/madarrays/waveform.py
index 8d6bb37aea9fcab3589c2f3961963588af3892e8..c1e83dcc107ae0913a31fdc87a2d6b4d1d77fdda 100644
--- a/madarrays/waveform.py
+++ b/madarrays/waveform.py
@@ -153,6 +153,15 @@ class Waveform(MadArray):
 
         # create the MadArray
         data = data.squeeze()
+        if isinstance(data, MadArray) and data._complex_masking \
+                and mask is None :
+            warnmsg = ('Construction of a Waveform from a MadArray with '
+                       'complex masking: the original masking data are '
+                       'discarded and a boolean mask set to False is used.')
+            warnings.warn(warnmsg)
+            # Create mask to force boolean masking
+            mask = np.zeros_like(data, dtype=np.bool)
+
         obj = MadArray.__new__(cls=cls, data=data, mask=mask,
                                masked_indexing=masked_indexing)
 
@@ -310,7 +319,7 @@ class Waveform(MadArray):
             self._fs = fs
             self._mask = np.zeros_like(self, dtype=np.bool)
 
-    def plot(self, x_axis_label='Time (s)', y_axis_label='s(t)',
+    def plot(self, x_axis_label='Time (s)', y_axis_label='',
              cpx_mode='real', fill_value=0, **kwargs):
         """Plot the signal.
 
@@ -366,7 +375,7 @@ class Waveform(MadArray):
 
     def plot_mask(self,
                   x_axis_label='Time (s)',
-                  y_axis_label='Missing',
+                  y_axis_label='',
                   **kwargs):
         """Plot the mask.