Index: source/blender/src/drawview.c =================================================================== --- source/blender/src/drawview.c (revision 10814) +++ source/blender/src/drawview.c (working copy) @@ -436,10 +436,12 @@ glPushMatrix(); glaDefine2DArea(&curarea->winrct); + glEnable(GL_BLEND); - glPixelTransferf(GL_ALPHA_SCALE, (1.0f-bgpic->blend)); glPixelZoom(zoomx, zoomy); - glaDrawPixelsSafe(x1, y1, ibuf->x, ibuf->y, ibuf->x, GL_RGBA, GL_UNSIGNED_BYTE, ibuf->rect); + glColor4f(1.0, 1.0, 1.0, 1.0-bgpic->blend); + glaDrawPixelsTex(x1, y1, ibuf->x, ibuf->y, GL_UNSIGNED_BYTE, ibuf->rect); + glPixelZoom(1.0, 1.0); glPixelTransferf(GL_ALPHA_SCALE, 1.0f); Index: source/blender/src/drawnode.c =================================================================== --- source/blender/src/drawnode.c (revision 10814) +++ source/blender/src/drawnode.c (working copy) @@ -1830,6 +1830,7 @@ glEnable(GL_BLEND); glBlendFunc( GL_ONE, GL_ONE_MINUS_SRC_ALPHA ); /* premul graphics */ + glColor4f(1.0, 1.0, 1.0, 1.0); glaDrawPixelsTex(prv->xmin, prv->ymin, preview->xsize, preview->ysize, GL_FLOAT, preview->rect); glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); Index: source/blender/src/glutil.c =================================================================== --- source/blender/src/glutil.c (revision 10814) +++ source/blender/src/glutil.c (working copy) @@ -263,9 +263,16 @@ int nsubparts_x= (img_w+(tex_w-1))/tex_w; int nsubparts_y= (img_h+(tex_h-1))/tex_h; - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + /* Specify the color outside this function, and tex will modulate it. + * This is useful for changing alpha without using glPixelTransferf() + */ + glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glPixelStorei(GL_UNPACK_ROW_LENGTH, img_w); glBindTexture(GL_TEXTURE_2D, texid); + + /* don't want nasty border artifacts */ + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); for (subpart_y=0; subpart_y