diff --git a/includes/image.inc b/includes/image.inc
index 1580d31..ad2895d 100644
--- a/includes/image.inc
+++ b/includes/image.inc
@@ -66,7 +66,21 @@ function image_get_toolkit() {
     if (isset($toolkit) && file_exists($toolkit_file)) {
       include_once $toolkit_file;
     }
-    elseif (!image_gd_check_settings()) {
+    else {
+      // Attempt to explicitly fall back to GD for this request.
+      $gd_file = drupal_get_path('includes') . '/' . 'image.gd.inc';
+      include_once $gd_file;
+      if (image_gd_check_settings()) {
+        watchdog('php', 'Image handling toolkit %toolkit selected, but %toolkit_file could not be loaded. Automatically falling back to GD toolkit for remainder of request.', array('%toolkit' => $toolkit, '%toolkit_file' => $toolkit_file), WATCHDOG_ERROR);
+        $toolkit = 'gd';
+      }
+      else {
+        watchdog('php', 'Image handling toolkit %toolkit selected, but %toolkit_file could not be loaded.', array('%toolkit' => $toolkit, '%toolkit_file' => $toolkit_file), WATCHDOG_ERROR);
+        $toolkit = FALSE;
+      }
+    }
+    else {
+      watchdog('php', 'Image handling toolkit %toolkit selected, but %toolkit_file could not be loaded. Attempted to fall back to GD toolkit, but %gd_file could not be loaded.', array('%toolkit' => $toolkit, '%toolkit_file' => $toolkit_file, '%gd_file' => $gd_file), WATCHDOG_ERROR);
       $toolkit = FALSE;
     }
   }
