diff --git a/poppler/Annot.cc b/poppler/Annot.cc
index 7b412ea..1d12aee 100644
--- a/poppler/Annot.cc
+++ b/poppler/Annot.cc
@@ -2582,14 +2582,11 @@
       }
 
       for (i = 0; i < quadrilaterals->getQuadrilateralsLength(); ++i) {
-        double x1, y1, x2, y2, x3, y3;
+        double x1, x2, y3;
 	double x, y;
 
 	x1 = quadrilaterals->getX1(i);
-	y1 = quadrilaterals->getY1(i);
 	x2 = quadrilaterals->getX2(i);
-	y2 = quadrilaterals->getY2(i);
-	x3 = quadrilaterals->getX3(i);
 	y3 = quadrilaterals->getY3(i);
 
 	x = x1 - rect->x1;
@@ -2607,15 +2604,13 @@
       }
 
       for (i = 0; i < quadrilaterals->getQuadrilateralsLength(); ++i) {
-        double x1, y1, x2, y2, x3, y3;
+        double x1, y1, x2, y3;
 	double x, y;
 	double h2;
 
 	x1 = quadrilaterals->getX1(i);
 	y1 = quadrilaterals->getY1(i);
 	x2 = quadrilaterals->getX2(i);
-	y2 = quadrilaterals->getY2(i);
-	x3 = quadrilaterals->getX3(i);
 	y3 = quadrilaterals->getY3(i);
 	h2 = (y1 - y3) / 2.0;
 
diff --git a/poppler/ArthurOutputDev.cc b/poppler/ArthurOutputDev.cc
index eb7f2d2..68a1c71 100644
--- a/poppler/ArthurOutputDev.cc
+++ b/poppler/ArthurOutputDev.cc
@@ -14,7 +14,7 @@
 // under GPL version 2 or later
 //
 // Copyright (C) 2005 Brad Hards <bradh@frogmouth.net>
-// Copyright (C) 2005-2009 Albert Astals Cid <aacid@kde.org>
+// Copyright (C) 2005-2009, 2011 Albert Astals Cid <aacid@kde.org>
 // Copyright (C) 2008, 2010 Pino Toscano <pino@kde.org>
 // Copyright (C) 2009, 2011 Carlos Garcia Campos <carlosgc@gnome.org>
 // Copyright (C) 2009 Petr Gajdos <pgajdos@novell.com>
@@ -284,7 +284,7 @@
   double *textMat;
   double m11, m12, m21, m22, fontSize;
   SplashCoord mat[4];
-  int substIdx, n;
+  int n;
   int faceIndex = 0;
   SplashCoord matrix[6];
 
@@ -292,7 +292,6 @@
   m_font = NULL;
   fileName = NULL;
   tmpBuf = NULL;
-  substIdx = -1;
 
   if (!(gfxFont = state->getFont())) {
     goto err1;
@@ -773,7 +772,6 @@
   int i;
   double *ctm;
   QMatrix matrix;
-  int is_identity_transform;
   QImage image;
   int stride;
   
@@ -783,12 +781,6 @@
 			   colorMap->getBits());
   imgStr->reset();
   
-  /* ICCBased color space doesn't do any color correction
-   * so check its underlying color space as well */
-  is_identity_transform = colorMap->getColorSpace()->getMode() == csDeviceRGB ||
-		  (colorMap->getColorSpace()->getMode() == csICCBased && 
-		  ((GfxICCBasedColorSpace*)colorMap->getColorSpace())->getAlt()->getMode() == csDeviceRGB);
-
   image = QImage(width, height, QImage::Format_ARGB32);
   data = (unsigned int *)image.bits();
   stride = image.bytesPerLine()/4;
