diff --git a/src/Fl_Text_Display.cxx b/src/Fl_Text_Display.cxx
index c1f575b1bfbdd36a85edd841c1aa97ef14cf506f..7f14623d609f7550b9b72285b88467aaa5fcd2b0 100644
--- a/src/Fl_Text_Display.cxx
+++ b/src/Fl_Text_Display.cxx
@@ -605,7 +605,7 @@ void Fl_Text_Display::recalc_display() {
       /* Decide if the vertical scrollbar needs to be visible */
       if (!mVScrollBar->visible() &&
           scrollbar_align() & (FL_ALIGN_LEFT|FL_ALIGN_RIGHT) &&
-          mNBufferLines >= mNVisibleLines-(mContinuousWrap?0:1))
+          mNBufferLines >= mNVisibleLines - ((mContinuousWrap && mWrapMarginPix) ? 0 : 1))
       {
         mVScrollBar->set_visible();
         text_area.w -= scrollsize;
@@ -3130,7 +3130,8 @@ void Fl_Text_Display::update_v_scrollbar() {
          mTopLineNum, mNVisibleLines, mNBufferLines);
 #endif // DEBUG
 
-  mVScrollBar->value(mTopLineNum, mNVisibleLines, 1, mNBufferLines+1+(mContinuousWrap?0:1));
+  mVScrollBar->value(mTopLineNum, mNVisibleLines, 1, mNBufferLines+1+
+                     ((mContinuousWrap && mWrapMarginPix) ? 0 : 1));
   mVScrollBar->linesize(3);
 }