diff --git a/src/popupwin.c b/src/popupwin.c
index 5853c7b..9465008 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -154,6 +154,10 @@
     static void
 popup_adjust_position(win_T *wp)
 {
+    linenr_T	lnum;
+    int		wrapped = 0;
+    int		maxwidth;
+
     // TODO: Compute the size and position properly.
     if (wp->w_wantline > 0)
 	wp->w_winrow = wp->w_wantline - 1;
@@ -171,18 +175,34 @@
     if (wp->w_wincol >= Columns - 3)
 	wp->w_wincol = Columns - 3;
 
-    // TODO: set width based on longest text line and the 'wrap' option
-    wp->w_width = vim_strsize(ml_get_buf(wp->w_buffer, 1, FALSE));
+    maxwidth = Columns - wp->w_wincol;
+    if (wp->w_maxwidth > 0 && maxwidth > wp->w_maxwidth)
+	maxwidth = wp->w_maxwidth;
+
+    // Compute width based on longest text line and the 'wrap' option.
+    // TODO: more accurate wrapping
+    wp->w_width = 0;
+    for (lnum = 1; lnum <= wp->w_buffer->b_ml.ml_line_count; ++lnum)
+    {
+	int len = vim_strsize(ml_get_buf(wp->w_buffer, lnum, FALSE));
+
+	while (wp->w_p_wrap && len > maxwidth)
+	{
+	    ++wrapped;
+	    len -= maxwidth;
+	    wp->w_width = maxwidth;
+	}
+	if (wp->w_width < len)
+	    wp->w_width = len;
+    }
+
     if (wp->w_minwidth > 0 && wp->w_width < wp->w_minwidth)
 	wp->w_width = wp->w_minwidth;
-    if (wp->w_maxwidth > 0 && wp->w_width > wp->w_maxwidth)
-	wp->w_width = wp->w_maxwidth;
-    if (wp->w_width > Columns - wp->w_wincol)
-	wp->w_width = Columns - wp->w_wincol;
+    if (wp->w_width > maxwidth)
+	wp->w_width = maxwidth;
 
     if (wp->w_height <= 1)
-	// TODO: adjust height for wrapped lines
-	wp->w_height = wp->w_buffer->b_ml.ml_line_count;
+	wp->w_height = wp->w_buffer->b_ml.ml_line_count + wrapped;
     if (wp->w_minheight > 0 && wp->w_height < wp->w_minheight)
 	wp->w_height = wp->w_minheight;
     if (wp->w_maxheight > 0 && wp->w_height > wp->w_maxheight)
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index 7d7d9a8..a2d2e80 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -176,3 +176,39 @@
 
   call popup_close(winid)
 endfunc
+
+func Test_popup_width_longest()
+  let tests = [
+	\ [['hello', 'this', 'window', 'displays', 'all of its text'], 15],
+	\ [['hello', 'this', 'window', 'all of its text', 'displays'], 15],
+	\ [['hello', 'this', 'all of its text', 'window', 'displays'], 15],
+	\ [['hello', 'all of its text', 'this', 'window', 'displays'], 15],
+	\ [['all of its text', 'hello', 'this', 'window', 'displays'], 15],
+	\ ]
+
+  for test in tests
+    let winid = popup_create(test[0], {'line': 2, 'col': 3})
+    redraw
+    let position = popup_getposition(winid)
+    call assert_equal(test[1], position.width)
+    call popup_close(winid)
+  endfor
+endfunc
+
+func Test_popup_wraps()
+  let tests = [
+	\ ['nowrap', 6, 1],
+	\ ['a line that wraps once', 12, 2],
+	\ ['a line that wraps two times', 12, 3],
+	\ ]
+  for test in tests
+    let winid = popup_create(test[0],
+	  \ {'line': 2, 'col': 3, 'maxwidth': 12})
+    redraw
+    let position = popup_getposition(winid)
+    call assert_equal(test[1], position.width)
+    call assert_equal(test[2], position.height)
+
+    call popup_close(winid)
+  endfor
+endfunc
diff --git a/src/version.c b/src/version.c
index 089b44f..00eaacb 100644
--- a/src/version.c
+++ b/src/version.c
@@ -768,6 +768,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1420,
+/**/
     1419,
 /**/
     1418,
