diff -urp imagecache/imagecache_actions.inc _imagecache/imagecache_actions.inc
--- imagecache/imagecache_actions.inc	2007-12-29 05:26:38.000000000 +1100
+++ _imagecache/imagecache_actions.inc	2008-02-06 14:37:51.000000000 +1100
@@ -25,11 +25,11 @@ function imagecache_scale_image(&$image,
   // Set impossibly large values if the width and height aren't set.
   $data['width'] = $data['width'] ? $data['width'] : 9999999;
   $data['height'] = $data['height'] ? $data['height'] : 9999999;
-  if (!imageapi_image_scale($image, $data['width'], $data['height'], $data['upscale'])) {
+  if (!$image = imageapi_image_scale($image, $data['width'], $data['height'], $data['upscale'])) {
     watchdog('imagecache', t('imagecache_scale_image failed. image: %image, data: %data.', array('%path' => $image, '%data' => print_r($data, TRUE))), WATCHDOG_ERROR);
     return FALSE;
   }
-  return TRUE;
+  return $image;
 }
 
 
@@ -49,11 +49,11 @@ function imagecache_scale_and_crop_image
    // Set impossibly large values if the width and height aren't set.
   $data['width'] = $data['width'] ? $data['width'] : 9999999;
   $data['height'] = $data['height'] ? $data['height'] : 9999999;
-  if (!imageapi_image_scale_and_crop($image, $data['width'], $data['height'])) {
+  if (!$image = imageapi_image_scale_and_crop($image, $data['width'], $data['height'])) {
     watchdog('imagecache', t('imagecache_scale_and_crop failed. image: %image, data: %data.', array('%path' => $image, '%data' => print_r($data, TRUE))), WATCHDOG_ERROR);
     return FALSE;
   }
-  return TRUE;
+  return $image;
 }
 
 
@@ -107,11 +107,11 @@ function imagecache_deprecated_scale_ima
   // Set impossibly large values if the width and height aren't set.
   $data['width'] = $data['width'] ? $data['width'] : 9999999;
   $data['height'] = $data['height'] ? $data['height'] : 9999999;
-  if (!imageapi_image_scale($image, $data['width'], $data['height'])) {
+  if (!$image = imageapi_image_scale($image, $data['width'], $data['height'])) {
      watchdog('imagecache', t('imagecache_deprecated_scale failed. image: %image, data: %data.', array('%path' => $image, '%data' => print_r($data, TRUE))), WATCHDOG_ERROR);
     return FALSE;
   }
-  return TRUE;
+  return $image;
 }
 
 
@@ -153,11 +153,11 @@ function theme_imagecache_crop($element)
 }
 
 function imagecache_crop_image(&$image, $data) {
-  if (!imageapi_image_crop($image, $data['xoffset'], $data['yoffset'], $data['width'], $data['height'])) {
+  if (!$image = imageapi_image_crop($image, $data['xoffset'], $data['yoffset'], $data['width'], $data['height'])) {
       watchdog('imagecache', t('imagecache_crop failed. image: %image, data: %data.', array('%path' => $image, '%data' => print_r($data, TRUE))), WATCHDOG_ERROR);
     return FALSE;
   }
-  return TRUE;
+  return $image;
 }
 
 
@@ -174,9 +174,9 @@ function theme_imagecache_desaturate($el
 
 
 function imagecache_desaturate_image(&$image, $data = array()) {
-  if (!imageapi_image_desaturate($image)) {
+  if (!$image = imageapi_image_desaturate($image)) {
     watchdog('imagecache', t('imagecache_desaturate failed. image: %image, data: %data.', array('%path' => $image, '%data' => print_r($data, TRUE))), WATCHDOG_ERROR);
     return FALSE;
   }
-  return TRUE;
+  return $image;
 }
diff -urp imagecache/imagecache.module _imagecache/imagecache.module
--- imagecache/imagecache.module	2008-01-02 23:36:00.000000000 +1100
+++ _imagecache/imagecache.module	2008-02-06 14:37:29.000000000 +1100
@@ -464,7 +464,7 @@ function imagecache_build_derivative($ac
         $action['data'][$key] = _imagecache_filter($key, $value, $image->info['width'], $image->info['height'], $width, $height);
       }
     }
-    if (!_imagecache_apply_action($action, $image)) {
+    if (!$image = _imagecache_apply_action($action, $image)) {
       watchdog( 'imagecache', t('action(id:%id): %action failed for %src', array('%id' => $action['actionid'], '%action' => $action['action'], '%src' => $src)), WATCHDOG_ERROR);
       return FALSE;
     }
