diff --git a/madarrays/waveform.py b/madarrays/waveform.py
index 6c300ba01e77682af2d31a2862ca837fe9ddf9b7..f07830a18f9c6cd26831aba4d3443718fae1e4d5 100644
--- a/madarrays/waveform.py
+++ b/madarrays/waveform.py
@@ -757,14 +757,15 @@ class Waveform(MadArray):
             if np.issubdtype(dtype, np.floating):
                 int_range = src_iinfo.max - src_iinfo.min + 1
                 zero = src_iinfo.min + int_range // 2
-                y = ((super(type(y), y).astype(np.float64) - zero)
+                y = ((super(type(y), y).astype(dtype) - zero)
                      / (int_range // 2))
                 y.clip(min_value=-1, max_value=1-np.finfo(dtype).eps)
-                y = y.astype(dtype)
+                y = np.array(y).astype(dtype)
 
             elif np.issubdtype(dtype, np.integer):
                 y = y.astype(dtype=np.float64)
                 y = y.astype(dtype=dtype)
+                y = np.array(y)
 
             elif np.issubdtype(dtype, np.complexfloating):
                 y = y.astype(dtype=np.float64)