diff --git a/src/mesa/main/accum.c b/src/mesa/main/accum.c
index a6e4226..2345695 100644
--- a/src/mesa/main/accum.c
+++ b/src/mesa/main/accum.c
@@ -94,11 +94,7 @@
    }
 
    if (ctx->RenderMode == GL_RENDER) {
-      GLint x = ctx->DrawBuffer->_Xmin;
-      GLint y = ctx->DrawBuffer->_Ymin;
-      GLint width =  ctx->DrawBuffer->_Xmax - ctx->DrawBuffer->_Xmin;
-      GLint height = ctx->DrawBuffer->_Ymax - ctx->DrawBuffer->_Ymin;
-      ctx->Driver.Accum(ctx, op, value, x, y, width, height);
+      ctx->Driver.Accum(ctx, op, value);
    }
 }
 
diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h
index 716c13c..a1999ac 100644
--- a/src/mesa/main/dd.h
+++ b/src/mesa/main/dd.h
@@ -118,10 +118,9 @@
     */
    /*@{*/
    /**
-    * Execute glAccum command within the given scissor region.
+    * Execute glAccum command.
     */
-   void (*Accum)( GLcontext *ctx, GLenum op, GLfloat value,
-		  GLint xpos, GLint ypos, GLint width, GLint height );
+   void (*Accum)( GLcontext *ctx, GLenum op, GLfloat value );
    /*@}*/
 
 
diff --git a/src/mesa/swrast/s_accum.c b/src/mesa/swrast/s_accum.c
index 0b8ad00..69e9404 100644
--- a/src/mesa/swrast/s_accum.c
+++ b/src/mesa/swrast/s_accum.c
@@ -541,12 +541,10 @@
  * Software fallback for glAccum.
  */
 void
-_swrast_Accum( GLcontext *ctx, GLenum op, GLfloat value,
-	       GLint xpos, GLint ypos,
-	       GLint width, GLint height )
-
+_swrast_Accum(GLcontext *ctx, GLenum op, GLfloat value)
 {
    SWcontext *swrast = SWRAST_CONTEXT(ctx);
+   GLint xpos, ypos, width, height;
 
    if (SWRAST_CONTEXT(ctx)->NewState)
       _swrast_validate_derived( ctx );
@@ -558,6 +556,14 @@
 
    RENDER_START(swrast, ctx);
 
+   /* Compute region after calling RENDER_START so that we know the
+    * drawbuffer's size/bounds are up to date.
+    */
+   xpos = ctx->DrawBuffer->_Xmin;
+   ypos = ctx->DrawBuffer->_Ymin;
+   width =  ctx->DrawBuffer->_Xmax - ctx->DrawBuffer->_Xmin;
+   height = ctx->DrawBuffer->_Ymax - ctx->DrawBuffer->_Ymin;
+
    switch (op) {
       case GL_ADD:
          if (value != 0.0F) {
diff --git a/src/mesa/swrast/swrast.h b/src/mesa/swrast/swrast.h
index 6d384fb..04bd01a 100644
--- a/src/mesa/swrast/swrast.h
+++ b/src/mesa/swrast/swrast.h
@@ -134,9 +134,7 @@
 	       GLint x, GLint y, GLint width, GLint height );
 
 extern void
-_swrast_Accum( GLcontext *ctx, GLenum op,
-	       GLfloat value, GLint xpos, GLint ypos,
-	       GLint width, GLint height );
+_swrast_Accum(GLcontext *ctx, GLenum op, GLfloat value);
 
 
 
