--- src/scrollbar.C.mdr	2012-05-15 12:44:49.000000000 +1000
+++ src/scrollbar.C	2012-05-15 12:44:53.000000000 +1000
@@ -264,7 +264,7 @@
   if (style == SB_STYLE_RXVT)
     {
       beg = (width + 1) + shadow;
-      end = term->szHint.height - beg - (2 * shadow);
+      end = term->szHint.height - beg;
       update = &scrollBar_t::show_rxvt;
     }
 #endif
--- src/scrollbar-rxvt.C.mdr	2012-05-14 15:38:31.000000000 +1000
+++ src/scrollbar-rxvt.C	2012-05-15 12:44:30.000000000 +1000
@@ -28,7 +28,7 @@
 #if defined(RXVT_SCROLLBAR)
 
 static void
-draw_shadow (scrollBar_t *sb, int x, int y, int w, int h)
+draw_shadow (scrollBar_t *sb, int rev, int x, int y, int w, int h)
 {
   int shadow;
   Drawable d = sb->win;
@@ -40,10 +40,10 @@
 
   for (; shadow-- > 0; x++, y++, w--, h--)
     {
-      XDrawLine (dpy, d, sb->topShadowGC, x, y, w    , y    );
-      XDrawLine (dpy, d, sb->topShadowGC, x, y, x    , h    );
-      XDrawLine (dpy, d, sb->botShadowGC, w, h, w    , y + 1);
-      XDrawLine (dpy, d, sb->botShadowGC, w, h, x + 1, h    );
+      XDrawLine (dpy, d, rev?sb->botShadowGC:sb->topShadowGC, x, y, w    , y    );
+      XDrawLine (dpy, d, rev?sb->botShadowGC:sb->topShadowGC, x, y, x    , h    );
+      XDrawLine (dpy, d, rev?sb->topShadowGC:sb->botShadowGC, w, h, w    , y + 1);
+      XDrawLine (dpy, d, rev?sb->topShadowGC:sb->botShadowGC, w, h, x + 1, h    );
     }
 }
 
@@ -211,10 +211,10 @@
 
   if (shadow)
     /* trough shadow */
-    draw_shadow (this, 0, 0, sbwidth + 2 * shadow, end + (sbwidth + 1) + shadow);
+    draw_shadow (this, 1, 0, 0, sbwidth + 2 * shadow, end + sbwidth + 2 * shadow);
 
   /* shadow for scrollbar slider */
-  draw_shadow (this, shadow, top, sbwidth, bot - top);
+  draw_shadow (this, 0, shadow, top, sbwidth, bot - top);
 
   /* Redraw scrollbar arrows */
   draw_button (this, shadow, shadow, UP);
