From ca3620f4bcd801624ac2232e6e20d0eec5c424e9 Mon Sep 17 00:00:00 2001
From: kramm <kramm>
Date: Thu, 8 May 2008 15:10:34 +0000
Subject: [PATCH] fixed previous antializer fix

---
 lib/pdf/GFXOutputDev.cc |   12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/lib/pdf/GFXOutputDev.cc b/lib/pdf/GFXOutputDev.cc
index ae26f2b..c88a035 100644
--- a/lib/pdf/GFXOutputDev.cc
+++ b/lib/pdf/GFXOutputDev.cc
@@ -1972,19 +1972,23 @@ unsigned char* antialize(unsigned char*data, int width, int height, int newwidth
 	double ex = px + fx;
 	int fromx = (int)px;
 	int tox = (int)ex;
-	int xweight1 = (int)(((fromx+1)-px)*256);
+	int xweight1 = (int)((1-(px-fromx))*256);
 	int xweight2 = (int)((ex-tox)*256);
 	double py =0;
 	for(y=0;y<newheight;y++) {
 	    double ey = py + fy;
 	    int fromy = (int)py;
 	    int toy = (int)ey;
-	    int yweight1 = (int)(((fromy+1)-py)*256);
+	    int yweight1 = (int)((1-(py-fromy))*256);
 	    int yweight2 = (int)((ey-toy)*256);
 	    int a = 0;
 	    int xx,yy;
-	    for(xx=fromx;xx<tox;xx++)
-	    for(yy=fromy;yy<toy;yy++) {
+            if(tox>=width) 
+                tox = width-1;
+            if(toy>=height) 
+                toy = height-1;
+	    for(xx=fromx;xx<=tox;xx++)
+	    for(yy=fromy;yy<=toy;yy++) {
 		int b = 1-data[width*yy+xx];
 		int weight=256;
 		if(xx==fromx) weight = (weight*xweight1)/256;
-- 
1.7.10.4