diff --git a/man/man1/fzf.1 b/man/man1/fzf.1
index 2d00cb845627277ce90d9c4cf2db921dd9de55b0..305ff9803a37a5c5b1fc885f07ea23e7b617001f 100644
--- a/man/man1/fzf.1
+++ b/man/man1/fzf.1
@@ -288,8 +288,11 @@ EXPRESSION\fR for the details).
 e.g. \fBfzf --preview='head -$LINES {}'\fR
      \fBls -l | fzf --preview="echo user={3} when={-4..-2}; cat {-1}" --header-lines=1\fR
 
-fzf overrides \fB$LINES\fR and \fB$COLUMNS\fR so that they represent the exact
-size of the preview window.
+fzf exports \fB$FZF_PREVIEW_LINES\fR and \fB$FZF_PREVIEW_COLUMNS\fR so that
+they represent the exact size of the preview window. (It also overrides
+\fB$LINES\fR and \fB$COLUMNS\fR with the same values but they can be reset
+by the default shell, so prefer to refer to the ones with \fBFZF_PREVIEW_\fR
+prefix.)
 
 A placeholder expression starting with \fB+\fR flag will be replaced to the
 space-separated list of the selected lines (or the current line if no selection
diff --git a/src/terminal.go b/src/terminal.go
index c807a4ba182ca66810ced829f6b29d48b50009a4..4eaf3f0ba0c05f1b3b5043e25b2688dc4511c517 100644
--- a/src/terminal.go
+++ b/src/terminal.go
@@ -613,7 +613,6 @@ func (t *Terminal) resizeWindows() {
 				pwidth += 1
 			}
 			t.pwindow = t.tui.NewWindow(y+1, x+2, pwidth, h-2, tui.BorderNone)
-			os.Setenv("FZF_PREVIEW_HEIGHT", strconv.Itoa(h-2))
 		}
 		switch t.preview.position {
 		case posUp:
@@ -1492,8 +1491,12 @@ func (t *Terminal) Loop() {
 					cmd := util.ExecCommand(command, true)
 					if t.pwindow != nil {
 						env := os.Environ()
-						env = append(env, fmt.Sprintf("LINES=%d", t.pwindow.Height()))
-						env = append(env, fmt.Sprintf("COLUMNS=%d", t.pwindow.Width()))
+						lines := fmt.Sprintf("LINES=%d", t.pwindow.Height())
+						columns := fmt.Sprintf("COLUMNS=%d", t.pwindow.Width())
+						env = append(env, lines)
+						env = append(env, "FZF_PREVIEW_"+lines)
+						env = append(env, columns)
+						env = append(env, "FZF_PREVIEW_"+columns)
 						cmd.Env = env
 					}
 					var out bytes.Buffer
diff --git a/test/test_go.rb b/test/test_go.rb
index df333c087a3413e7c9455d9976e8896f96ee1e0c..4d3fa647f88afd80fe01d4132094b53217608d8f 100755
--- a/test/test_go.rb
+++ b/test/test_go.rb
@@ -1371,7 +1371,7 @@ class TestGoFZF < TestBase
   end
 
   def test_preview_hidden
-    tmux.send_keys %(seq 1000 | #{FZF} --preview 'echo {{}-{}-\\$LINES-\\$COLUMNS}' --preview-window down:1:hidden --bind ?:toggle-preview), :Enter
+    tmux.send_keys %(seq 1000 | #{FZF} --preview 'echo {{}-{}-\\$FZF_PREVIEW_LINES-\\$FZF_PREVIEW_COLUMNS}' --preview-window down:1:hidden --bind ?:toggle-preview), :Enter
     tmux.until { |lines| lines[-1] == '>' }
     tmux.send_keys '?'
     tmux.until { |lines| lines[-2] =~ / {1-1-1-[0-9]+}/ }