diff --git a/pub/lib/plot.cpp b/pub/lib/plot.cpp
index 4182d9a86509c39ebaedd1e1f538f7414b0a2061..be8c9ad5e7ce99dcd968df814f235948c2af2125 100644
--- a/pub/lib/plot.cpp
+++ b/pub/lib/plot.cpp
@@ -556,7 +556,9 @@ namespace {
             const CSpec* s = fd->VS(j);
             vector<double> xlim = triv::histogram_limits(s->x);
             for (size_t i=0; i<s->size(); ++i)
-                if (s->y[i])
+                if (s->y[i] && plot->Y.contains(s->y[i])
+                    && plot->X.contains(xlim[i]) && plot->X.contains(xlim[i+1])
+                    && plot->Z.contains(zlim[j]) && plot->Z.contains(zlim[j+1]))
                     plot->ps_line(
                         str(format("%13.7g wx %13.7g wx  %13.7g wy %13.7g wy  %13.7g wh t2d")
                             % xlim[i] % xlim[i+1] % zlim[j] % zlim[j+1] % s->y[i] ) );