diff --git a/src/Gview.cc b/src/Gview.cc
index f68aa8afcc62306996db43b16d2bdda28aab347f..addcb2f7e757a7deb034d2badb26e7e8805337ac 100644
--- a/src/Gview.cc
+++ b/src/Gview.cc
@@ -241,6 +241,12 @@ void Fl_Gview::glprojection( float nearclip, float farclip, const Matrix *postpr
     glLoadIdentity();
     if(inpick()) {
 	GLint vp[4] = {0, 0, w(), h()};
+	if(stereo_ == GV_CROSSEYED) {
+	    /* Jigger viewport -- choose whichever half this pick came from */
+	    int myw = (w() - stereooff_)/2;
+	    vp[2] = myw;
+	    if(pickx_ > myw) vp[0] = w() - myw;
+	}
 	gluPickMatrix( pickx_, picky_, pickwidth_, pickheight_, vp );
     }
     if(use_subc_) {