--- rxvt-unicode/src/rxvtfont.C 2008/01/23 05:59:29 1.130 +++ rxvt-unicode/src/rxvtfont.C 2008/01/23 06:49:30 1.133 @@ -239,10 +239,12 @@ { #if XFT bool done = false; -#ifdef HAVE_BG_PIXMAP - if (term->bgPixmap.pixmap && color >= 0 && term->pix_colors[color].c.color.alpha < 0x0ff00) + +# ifdef HAVE_BG_PIXMAP + if (term->bgPixmap.pixmap && color >= 0 && !term->pix_colors[color].is_opaque ()) { Picture dst = XftDrawPicture (d); + if (dst != 0) { XClearArea (disp, d, x, y, w, h, false); @@ -251,9 +253,10 @@ done = true; } } -#endif +# endif if (!done) XftDrawRect (d, &term->pix_colors[color].c, x, y, w, h); + #else XSetForeground (disp, gc, term->pix_colors[color]); XFillRectangle (disp, d, gc, x, y, w, h); @@ -1353,6 +1356,8 @@ Picture dst = 0; if (bg >= 0 && term->pix_colors[bg].is_opaque ()) + XftDrawRect (d2, &term->pix_colors[bg].c, 0, 0, w, h); + else dst = XftDrawPicture (d2); if (dst) @@ -1401,8 +1406,8 @@ } #endif - if (bg >= 0 && !back_rendered) - XftDrawRect (d2, &term->pix_colors[bg].c, 0, 0, w, h); + if (!back_rendered) + XftDrawRect (d2, &term->pix_colors[bg < 0 ? Color_bg : bg].c, 0, 0, w, h); XftDrawGlyphSpec (d2, &term->pix_colors[fg].c, f, enc, ep - enc); XCopyArea (disp, d2, d, gc, 0, 0, w, h, x, y);