diff -urN qiv-2.1.orig/event.c qiv-2.1/event.c
--- qiv-2.1.orig/event.c	2009-03-05 22:07:37.000000000 -0500
+++ qiv-2.1/event.c	2009-03-06 10:40:31.000000000 -0500
@@ -9,9 +9,7 @@
 
 #include <stdio.h>
 #include <string.h>
-#include <gdk/gdkx.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtkmain.h>
+#include <gtk/gtk.h>
 #include "qiv.h"
 
 #define STEP 3 //When using KP arrow, number of step for seeing all the image.
@@ -868,7 +866,9 @@
             /* Flip horizontal */
 
           case 'h':
-            gdk_imlib_flip_image_horizontal(q->im);
+/* BDD */
+/*            gdk_imlib_flip_image_horizontal(q->im); */
+            gdk_pixbuf_flip(q->im, TRUE);
             snprintf(infotext, sizeof infotext, "(Flipped horizontally)");
             update_image(q, REDRAW);
             break;
@@ -876,7 +876,9 @@
             /* Flip vertical */
 
           case 'v':
-            gdk_imlib_flip_image_vertical(q->im);
+/* BDD */
+/*            gdk_imlib_flip_image_vertical(q->im); */
+            gdk_pixbuf_flip(q->im, FALSE);
             snprintf(infotext, sizeof infotext, "(Flipped vertically)");
             update_image(q, REDRAW);
             break;
@@ -896,8 +898,11 @@
             /* Rotate right */
 
           case 'k':
-            gdk_imlib_rotate_image(q->im, 1);
-            gdk_imlib_flip_image_horizontal(q->im);
+/* BDD */
+/*            gdk_imlib_rotate_image(q->im, 1); */
+/*            gdk_imlib_flip_image_horizontal(q->im); */
+            gdk_pixbuf_rotate_simple(q->im, GDK_PIXBUF_ROTATE_CLOCKWISE);
+            gdk_pixbuf_flip(q->im, TRUE);
             snprintf(infotext, sizeof infotext, "(Rotated right)");
             swap(&q->orig_w, &q->orig_h);
             swap(&q->win_w, &q->win_h);
@@ -909,8 +914,11 @@
             /* Rotate left */
 
           case 'l':
-            gdk_imlib_rotate_image(q->im, -1);
-            gdk_imlib_flip_image_vertical(q->im);
+/* BDD */
+/*            gdk_imlib_rotate_image(q->im, -1); */
+/*            gdk_imlib_flip_image_vertical(q->im); */
+            gdk_pixbuf_rotate_simple(q->im, COUNTERCLOCKWISE);
+            gdk_pixbuf_flip(q->im, FALSE);
             snprintf(infotext, sizeof infotext, "(Rotated left)");
             swap(&q->orig_w, &q->orig_h);
             swap(&q->win_w, &q->win_h);
diff -urN qiv-2.1.orig/image.c qiv-2.1/image.c
--- qiv-2.1.orig/image.c	2009-03-05 21:46:55.000000000 -0500
+++ qiv-2.1/image.c	2009-03-06 11:51:40.000000000 -0500
@@ -9,7 +9,6 @@
 
 #include <stdio.h>
 #include <string.h>
-#include <gdk/gdkx.h>
 #include <sys/time.h>
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -107,18 +106,23 @@
   GdkImlibColor color;
   struct stat statbuf;
   const char * image_name = image_names[ image_idx];
+  GError *gerror;
 
   gettimeofday(&load_before, 0);
 
   if (q->im) {
     /* Discard previous image. To enable caching, s/kill/destroy/. */
-    gdk_imlib_kill_image(q->im);
+/* BDD */
+/*    gdk_imlib_kill_image(q->im); */
+    g_object_unref(q->im);
     q->im = NULL;
   }
 
   stat(image_name, &statbuf);
   current_mtime = statbuf.st_mtime;
-  q->im = gdk_imlib_load_image( (char*)image_name );
+/* BDD */
+/*  q->im = gdk_imlib_load_image( (char*)image_name ); */
+  q->im = gdk_pixbuf_new_from_file(image_names[image_idx], &gerror);
 #ifdef HAVE_EXIF
   if (autorotate) {
     transform( q, orient( image_name));
@@ -126,10 +130,11 @@
 #endif
 
   /* this function doesn't seem to work :-(  */
-  gdk_imlib_get_image_shape(q->im,&color);
-#ifdef DEBUG
-  g_print("transparent color (RGB): %d, %d, %d\n", color.r, color.g, color.b);
-#endif
+/* BDD - If it doesn't work, why use it? */
+/*   gdk_imlib_get_image_shape(q->im,&color); */
+/* #ifdef DEBUG */
+/*   g_print("transparent color (RGB): %d, %d, %d\n", color.r, color.g, color.b); */
+/* #endif */
 
   /* turn transparency off */
   /* this function doesn't seem to work, but isn't necessary either  */
@@ -146,8 +151,11 @@
     q->orig_h = 300;
   } else { /* Retrieve image properties */
     q->error = 0;
-    q->orig_w = q->im->rgb_width;
-    q->orig_h = q->im->rgb_height;
+/* BDD */
+/*    q->orig_w = q->im->rgb_width; */
+/*    q->orig_h = q->im->rgb_height; */
+    q->orig_w = gdk_pixbuf_get_width(q->im);
+    q->orig_h = gdk_pixbuf_get_height(q->im);
   }
 
   check_size(q, TRUE);
@@ -284,6 +292,8 @@
   GdkVisual *gvis = gdk_window_get_visual(root_win);
   GdkPixmap *temp;
   GdkPixmap *m = NULL;
+/* BDD */
+  GdkBitmap *mask = NULL;
   gchar     *buffer;
 
   gint root_w = screen_x, root_h = screen_y;
@@ -308,7 +318,9 @@
   if (m)  g_print("*** image has transparency\n");
 #endif
 
-  if (gvis != gdk_imlib_get_visual()) {
+/* BDD */
+/*  if (gvis != gdk_imlib_get_visual()) { */
+  if (gvis != gdk_rgb_get_visual()) {
     fprintf(stderr,
         "qiv: Your root window's visual is not the visual Imlib chose;\n"
         "     qiv cannot set the background currently.\n");
@@ -325,12 +337,16 @@
                                        screen_y, gvis->depth, &image_bg, &image_bg);
     gdk_draw_pixmap(temp, rootGC, q->p, 0, 0, root_x, root_y, root_w, root_h);
     gdk_window_set_back_pixmap(root_win, temp, FALSE);
-    gdk_imlib_free_pixmap(temp);
+/* BDD */
+/*    gdk_imlib_free_pixmap(temp); */
+    gdk_pixmap_unref(temp);
     gdk_gc_destroy(rootGC);
   }
 
   if(q->p) {
-    gdk_imlib_free_pixmap(q->p);
+/* BDD */
+/*    gdk_imlib_free_pixmap(q->p); */
+    gdk_pixmap_unref(q->p);
     q->p = NULL;
   }
   gdk_window_clear(root_win);
@@ -431,21 +447,30 @@
 
 void reload_image(qiv_image *q)
 {
+  GError *gerror;
   if(watch_file) {
-    GdkImlibImage *new_im = gdk_imlib_load_image(image_names[image_idx]);
+/* BDD */
+/*    GdkImlibImage *new_im = gdk_imlib_load_image(image_names[image_idx]); */
+    GdkPixbuf *new_im = gdk_pixbuf_new_from_file(image_names[image_idx], &gerror);
     if(new_im){
       struct stat statbuf;
       stat(image_names[image_idx], &statbuf);
       current_mtime = statbuf.st_mtime;
 
-      gdk_imlib_destroy_image(q->im);
+/* BDD */
+/*      gdk_imlib_destroy_image(q->im); */
+      g_object_unref(q->im);
       q->im = new_im;
-      q->orig_w = q->im->rgb_width;
-      q->orig_h = q->im->rgb_height;
+/*      q->orig_w = q->im->rgb_width; */
+/*      q->orig_h = q->im->rgb_height; */
+      q->orig_w = gdk_pixbuf_get_width(q->im);
+      q->orig_h = gdk_pixbuf_get_height(q->im);
     }
   } else {
-    gdk_imlib_destroy_image(q->im);
-    q->im = gdk_imlib_load_image(image_names[image_idx]);
+/*    gdk_imlib_destroy_image(q->im); */
+/*    q->im = gdk_imlib_load_image(image_names[image_idx]); */
+    g_object_unref(q->im);
+    q->im = gdk_pixbuf_new_from_file(image_names[image_idx], &gerror);
   }
   if (!q->im) { /* error */
     q->im = NULL;
@@ -454,8 +479,11 @@
     q->orig_h = 300;
   } else { /* Retrieve image properties */
     q->error = 0;
-    q->orig_w = q->im->rgb_width;
-    q->orig_h = q->im->rgb_height;
+/* BDD */
+/*    q->orig_w = q->im->rgb_width; */
+/*    q->orig_h = q->im->rgb_height; */
+    q->orig_w = gdk_pixbuf_get_width(q->im);
+    q->orig_h = gdk_pixbuf_get_height(q->im);
   }
 
   q->win_w = (gint)(q->orig_w * (1 + zoom_factor * 0.1));
@@ -716,7 +744,9 @@
 
 void destroy_image(qiv_image *q)
 {
-  if (q->p) gdk_imlib_free_pixmap(q->p);
+/* BDD */
+/*  if (q->p) gdk_imlib_free_pixmap(q->p); */
+  if (q->p) g_object_unref(q->p);
   if (q->bg_gc) gdk_gc_destroy(q->bg_gc);
   if (q->text_gc) gdk_gc_destroy(q->text_gc);
   if (q->status_gc) gdk_gc_destroy(q->status_gc);
@@ -806,7 +836,9 @@
 //    printf("MGL: xcur: %d, ycur: %d, xx: %d, yy: %d\n", xcur, ycur, xx, yy);
 
     if (m->im) {
-      gdk_imlib_kill_image(m->im);
+/* BDD */
+/*      gdk_imlib_kill_image(m->im); */
+      g_object_unref(m->im);
       m->im = NULL;
     }
 
diff -urN qiv-2.1.orig/main.c qiv-2.1/main.c
--- qiv-2.1.orig/main.c	2009-03-05 22:24:53.000000000 -0500
+++ qiv-2.1/main.c	2009-03-06 12:08:53.000000000 -0500
@@ -7,9 +7,7 @@
   Policy       : GNU GPL
 */
 
-#include <gdk/gdkx.h>
-#include <gtk/gtkwidget.h>
-#include <gtk/gtkmain.h>
+#include <gtk/gtk.h>
 #include <stdio.h>
 #include <signal.h>
 #include <sys/time.h>
@@ -73,7 +71,8 @@
   /* Initialize GDK and Imlib */
 
   gdk_init(&argc,&argv);
-  gdk_imlib_init();
+/* BDD - Shouldn't be needed anymore. */
+/*  gdk_imlib_init(); */
 
   //probably should only use one of the init funcs...
   //gdk_imlib_init_params(&params);
@@ -107,8 +106,9 @@
 //  screen_y=MIN(screen_y, preferred_screen->height);
 #endif
 
-  gtk_widget_push_visual(gdk_imlib_get_visual());
-  gtk_widget_push_colormap(gdk_imlib_get_colormap());
+/* BDD - Shouldn't be required for gdk-pixbuf.? */
+/*  gtk_widget_push_visual(gdk_imlib_get_visual()); */
+/*  gtk_widget_push_colormap(gdk_imlib_get_colormap()); */
 
 
   max_rand_num = images;
diff -urN qiv-2.1.orig/Makefile qiv-2.1/Makefile
--- qiv-2.1.orig/Makefile	2009-03-05 21:54:35.000000000 -0500
+++ qiv-2.1/Makefile	2009-03-06 10:35:57.000000000 -0500
@@ -57,9 +57,8 @@
 #	    -fcaller-saves -ffast-math -fno-strength-reduce \
 #	    -fthread-jumps #-march=pentium #-DSTAT_MACROS_BROKEN
 
-INCLUDES  = `imlib-config --cflags-gdk`
-INCLUDES += `gtk-config --cflags`
-LIBS      = `imlib-config --libs-gdk`
+INCLUDES = `pkg-config --cflags gtk+-2.0`
+LIBS      = `pkg-config --libs gtk+-2.0`
 # [as] thinks that this is not portable enough
 # [lc] I use a virtual screen of 1600x1200, and the resolution is 1024x768,
 # so I changed (in main.c) how screen_[x,y] is obtained; it seems that gtk
diff -urN qiv-2.1.orig/qiv.h qiv-2.1/qiv.h
--- qiv-2.1.orig/qiv.h	2009-03-05 22:24:53.000000000 -0500
+++ qiv-2.1/qiv.h	2009-03-06 12:10:45.000000000 -0500
@@ -1,5 +1,4 @@
-#include <gdk/gdk.h>
-#include <gdk_imlib.h>
+#include <gtk/gtk.h>
 #include <unistd.h>
 #include <stdlib.h>
 #ifdef GTD_XINERAMA
@@ -42,7 +41,9 @@
 typedef struct _qiv_image {
   GdkImlibColorModifier mod; /* Image modifier (for brightness..) */
   GdkPixmap *p; /* Pixmap of the image to display */
-  GdkImlibImage *im; /* Image */
+/* BDD */
+/*  GdkImlibImage *im; /* Image */ */
+  GdkPixbuf *im; /* Image */
   GdkWindow *win; /* Main window for windowed and fullscreen mode */
   int error; /* 1 if Imlib couldn't load image */
   gint win_x, win_y, win_w, win_h; /* window co-ordinates */
@@ -67,7 +68,9 @@
 typedef struct _qiv_mgl {
   GdkImlibColorModifier mod; /* Image modifier (for brightness..) */
   GdkPixmap *p; /* Pixmap of the image to display */
-  GdkImlibImage *im; /* Image */
+/* BDD */
+/*  GdkImlibImage *im; /* Image */ */
+  GdkPixbuf *im; /* Image */
   GdkWindow *win; /* window for magnify */
   gint win_x, win_y, win_w, win_h; /* window coordinates */
   gint frame_x, frame_y; /* UpLeft Corner of frame (titlebar included) of */
