diff --git a/runtime/doc/popup.txt b/runtime/doc/popup.txt
index 0fd30eb..564bcbe 100644
--- a/runtime/doc/popup.txt
+++ b/runtime/doc/popup.txt
@@ -178,7 +178,7 @@
 popup_atcursor({what}, {options})			*popup_atcursor()*
 		Show the {what} above the cursor, and close it when the cursor
 		moves.  This works like: >
-			call popup_create({what}, *{
+			call popup_create({what}, ~{
 				\ pos: 'botleft',
 				\ line: 'cursor-1',
 				\ col: 'cursor',
@@ -191,7 +191,7 @@
 		Show the {what} above the position from 'ballooneval' and
 		close it when the mouse moves.  This works like: >
 		  let pos = screenpos(v:beval_winnr, v:beval_lnum, v:beval_col)
-		  call popup_create({what}, *{
+		  call popup_create({what}, ~{
 			\ pos: 'botleft',
 			\ line: pos.row - 1,
 			\ col: pos.col,
@@ -240,7 +240,7 @@
 
 popup_dialog({what}, {options})				*popup_dialog()*
 		Just like |popup_create()| but with these default options: >
-			call popup_create({what}, *{
+			call popup_create({what}, ~{
 				\ pos: 'center',
 				\ zindex: 200,
 				\ drag: 1,
@@ -249,7 +249,7 @@
 				\})
 <		Use {options} to change the properties. E.g. add a 'filter'
 		option with value 'popup_filter_yesno'.  Example: >
-			call popup_create('do you want to quit (Yes/no)?', *{
+			call popup_create('do you want to quit (Yes/no)?', ~{
 				\ filter: 'popup_filter_yesno',
 				\ callback: 'QuitCallback',
 				\ })
@@ -356,7 +356,7 @@
 		items with cursorkeys, and close it an item is selected with
 		Space or Enter. {what} should have multiple lines to make this
 		useful.  This works like: >
-			call popup_create({what}, *{
+			call popup_create({what}, ~{
 				\ pos: 'center',
 				\ zindex: 200,
 				\ drag: 1,
@@ -391,7 +391,7 @@
 popup_notification({what}, {options})			 *popup_notification()*
 		Show the {what} for 3 seconds at the top of the Vim window.
 		This works like: >
-			call popup_create({what}, *{
+			call popup_create({what}, ~{
 				\ line: 1,
 				\ col: 10,
 				\ minwidth: 20,
@@ -732,7 +732,7 @@
 	   endif
 	endfunc
 
-	call popup_dialog('Continue? y/n', *{
+	call popup_dialog('Continue? y/n', ~{
 		\ filter: 'popup_filter_yesno',
 		\ callback: 'MyDialogHandler',
 		\ })
@@ -740,7 +740,7 @@
 					*popup_menu-shortcut-example*
 Extend popup_filter_menu() with shortcut keys: >
 
-	call popup_menu(['Save', 'Cancel', 'Discard'], *{
+	call popup_menu(['Save', 'Cancel', 'Discard'], ~{
 		\ filter: 'MyMenuFilter',
 		\ callback: 'MyMenuHandler',
 		\ })
@@ -781,7 +781,7 @@
 	    endif
 	    call popup_close(s:winid)
 	  endif
-	  let s:winid = popup_beval(v:beval_text, *{mousemoved: 'word'})
+	  let s:winid = popup_beval(v:beval_text, ~{mousemoved: 'word'})
 	  let s:last_text = v:beval_text
 	  return ''
 	endfunc
@@ -812,7 +812,7 @@
 	endfunc
 
 	func ShowPopup(id)
-	  let s:winid = popup_beval(s:balloonText, *{mousemoved: 'word'})
+	  let s:winid = popup_beval(s:balloonText, ~{mousemoved: 'word'})
 	endfunc
 <
 
