diff --git a/src/beval.c b/src/beval.c
index 8b7570b..a9d10a2 100644
--- a/src/beval.c
+++ b/src/beval.c
@@ -259,6 +259,8 @@
 						    : wp->w_buffer->b_p_bexpr;
 	if (*bexpr != NUL)
 	{
+	    sctx_T	save_sctx = current_sctx;
+
 	    // Convert window pointer to number.
 	    for (cw = firstwin; cw != wp; cw = cw->w_next)
 		++winnr;
@@ -284,6 +286,16 @@
 		++sandbox;
 	    ++textwinlock;
 
+	    if (bexpr == p_bexpr)
+	    {
+		sctx_T *sp = get_option_sctx("balloonexpr");
+
+		if (sp != NULL)
+		    current_sctx = *sp;
+	    }
+	    else
+		current_sctx = curbuf->b_p_script_ctx[BV_BEXPR];
+
 	    vim_free(result);
 	    result = eval_to_string(bexpr, TRUE);
 
@@ -300,6 +312,7 @@
 	    if (use_sandbox)
 		--sandbox;
 	    --textwinlock;
+	    current_sctx = save_sctx;
 
 	    set_vim_var_string(VV_BEVAL_TEXT, NULL, -1);
 	    if (result != NULL && result[0] != NUL)
diff --git a/src/option.c b/src/option.c
index 4cc6142..f6b6afa 100644
--- a/src/option.c
+++ b/src/option.c
@@ -2615,6 +2615,21 @@
 }
 
 /*
+ * Get the script context of global option "name".
+ *
+ */
+    sctx_T *
+get_option_sctx(char *name)
+{
+    int idx = findoption((char_u *)name);
+
+    if (idx >= 0)
+	return &options[idx].script_ctx;
+    siemsg("no such option: %s", name);
+    return NULL;
+}
+
+/*
  * Set the script_ctx for a termcap option.
  * "name" must be the two character code, e.g. "RV".
  * When "name" is NULL use "opt_idx".
diff --git a/src/proto/option.pro b/src/proto/option.pro
index a099624..11f342c 100644
--- a/src/proto/option.pro
+++ b/src/proto/option.pro
@@ -22,6 +22,7 @@
 void redraw_titles(void);
 int valid_name(char_u *val, char *allowed);
 void set_option_sctx_idx(int opt_idx, int opt_flags, sctx_T script_ctx);
+sctx_T *get_option_sctx(char *name);
 void set_term_option_sctx_idx(char *name, int opt_idx);
 void check_redraw(long_u flags);
 int findoption(char_u *arg);
diff --git a/src/testdir/dumps/Test_balloon_eval_term_01.dump b/src/testdir/dumps/Test_balloon_eval_term_01.dump
index 9ae7006..be98212 100644
--- a/src/testdir/dumps/Test_balloon_eval_term_01.dump
+++ b/src/testdir/dumps/Test_balloon_eval_term_01.dump
@@ -2,7 +2,7 @@
 |t|w|o| |t|X|o| |t|w|o| @38
 |t|h|r|e| +0#0000001#ffd7ff255@17| +0#0000000#ffffff0@27
 |~+0#4040ff13&| @2| +0#0000001#ffd7ff255|l|i|n|e| |2| |c|o|l|u|m|n| |6|:| | +0#4040ff13#ffffff0@27
-|~| @2| +0#0000001#ffd7ff255|t|X|o| @13| +0#4040ff13#ffffff0@27
+|~| @2| +0#0000001#ffd7ff255|t|X|o|<| @12| +0#4040ff13#ffffff0@27
 |~| @2| +0#0000001#ffd7ff255@17| +0#4040ff13#ffffff0@27
 |~| @48
 |~| @48
diff --git a/src/testdir/dumps/Test_balloon_eval_term_01a.dump b/src/testdir/dumps/Test_balloon_eval_term_01a.dump
index 9ae7006..be98212 100644
--- a/src/testdir/dumps/Test_balloon_eval_term_01a.dump
+++ b/src/testdir/dumps/Test_balloon_eval_term_01a.dump
@@ -2,7 +2,7 @@
 |t|w|o| |t|X|o| |t|w|o| @38
 |t|h|r|e| +0#0000001#ffd7ff255@17| +0#0000000#ffffff0@27
 |~+0#4040ff13&| @2| +0#0000001#ffd7ff255|l|i|n|e| |2| |c|o|l|u|m|n| |6|:| | +0#4040ff13#ffffff0@27
-|~| @2| +0#0000001#ffd7ff255|t|X|o| @13| +0#4040ff13#ffffff0@27
+|~| @2| +0#0000001#ffd7ff255|t|X|o|<| @12| +0#4040ff13#ffffff0@27
 |~| @2| +0#0000001#ffd7ff255@17| +0#4040ff13#ffffff0@27
 |~| @48
 |~| @48
diff --git a/src/testdir/dumps/Test_balloon_eval_term_02.dump b/src/testdir/dumps/Test_balloon_eval_term_02.dump
index 76a91ae..51c5e32 100644
--- a/src/testdir/dumps/Test_balloon_eval_term_02.dump
+++ b/src/testdir/dumps/Test_balloon_eval_term_02.dump
@@ -3,7 +3,7 @@
 |t|h|r|e|e+0&#e0e0e08| |t|h>r+0&#ffffff0|e@1| |t|h|r|e@1| @32
 |~+0#4040ff13&| @2| +0#0000001#ffd7ff255@17| +0#4040ff13#ffffff0@27
 |~| @2| +0#0000001#ffd7ff255|l|i|n|e| |3| |c|o|l|u|m|n| |5|:| | +0#4040ff13#ffffff0@27
-|~| @2| +0#0000001#ffd7ff255|e| |t|h|r| @11| +0#4040ff13#ffffff0@27
+|~| @2| +0#0000001#ffd7ff255|e| |t|h|r|<| @10| +0#4040ff13#ffffff0@27
 |~| @2| +0#0000001#ffd7ff255@17| +0#4040ff13#ffffff0@27
 |~| @48
 |~| @48
diff --git a/src/testdir/test_balloon.vim b/src/testdir/test_balloon.vim
index 319e546..ed0c6c1 100644
--- a/src/testdir/test_balloon.vim
+++ b/src/testdir/test_balloon.vim
@@ -10,7 +10,8 @@
 
 let s:common_script =<< trim [CODE]
   call setline(1, ["one one one", "two tXo two", "three three three"])
-  set balloonevalterm balloonexpr=MyBalloonExpr() balloondelay=100
+  set balloonevalterm balloonexpr=MyBalloonExpr()..s:trailing balloondelay=100
+  let s:trailing = '<'  " check that script context is set
   func MyBalloonExpr()
     return "line " .. v:beval_lnum .. " column " .. v:beval_col .. ":\n" .. v:beval_text
   endfun
diff --git a/src/version.c b/src/version.c
index 86eb140..88d32ff 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4180,
+/**/
     4179,
 /**/
     4178,
