diff --git a/ChangeLog b/ChangeLog
index ae08f92d89..c771562bfb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2003-05-08  Michael Natterer  <mitch@gimp.org>
+
+	* app/core/gimplayer.[ch]: removed the remaining layer scale API.
+
+	* app/core/gimpitem.[ch]: added the same functions here.
+
+	* app/core/gimpimage-scale.c
+	* app/gui/layers-commands.c
+	* tools/pdbgen/pdb/layer.pdb: changed accordingly.
+
+	* app/pdb/layer_cmds.c: regenerated.
+
 2003-05-08  Michael Natterer  <mitch@gimp.org>
 
 	* app/core/gimpitem.[ch] (gimp_item_configure): added width,
diff --git a/app/actions/layers-commands.c b/app/actions/layers-commands.c
index 0604bb5892..2789582514 100644
--- a/app/actions/layers-commands.c
+++ b/app/actions/layers-commands.c
@@ -943,11 +943,11 @@ scale_layer_query_ok_callback (GtkWidget *widget,
               floating_sel_relax (layer, TRUE);
             }
 
-	  gimp_layer_scale_by_origin (layer, 
-                                      options->resize->width,
-                                      options->resize->height,
-                                      options->resize->interpolation,
-                                      TRUE);
+	  gimp_item_scale_by_origin (GIMP_ITEM (layer),
+                                     options->resize->width,
+                                     options->resize->height,
+                                     options->resize->interpolation,
+                                     TRUE);
 
 	  if (gimp_layer_is_floating_sel (layer))
             {
diff --git a/app/core/gimpimage-scale.c b/app/core/gimpimage-scale.c
index 46d73a9cd4..32de582757 100644
--- a/app/core/gimpimage-scale.c
+++ b/app/core/gimpimage-scale.c
@@ -122,17 +122,17 @@ gimp_image_scale (GimpImage             *gimage,
        list; 
        list = g_list_next (list))
     {
-      layer = (GimpLayer *) list->data;
+      item = (GimpItem *) list->data;
 
-      if (! gimp_layer_scale_by_factors (layer, img_scale_w, img_scale_h,
-                                         interpolation_type))
+      if (! gimp_item_scale_by_factors (item, img_scale_w, img_scale_h,
+                                        interpolation_type))
 	{
 	  /* Since 0 < img_scale_w, img_scale_h, failure due to one or more
 	   * vanishing scaled layer dimensions. Implicit delete implemented
 	   * here. Upstream warning implemented in resize_check_layer_scaling()
 	   * [resize.c line 1295], which offers the user the chance to bail out.
 	   */
-          remove = g_slist_append (remove, layer);
+          remove = g_slist_append (remove, item);
         }
 
       if (progress_func)
@@ -216,11 +216,11 @@ gimp_image_check_scaling (const GimpImage *gimage,
        list;
        list = g_list_next (list))
     {
-      GimpLayer *layer;
+      GimpItem *item;
 
-      layer = (GimpLayer *) list->data;
+      item = (GimpItem *) list->data;
 
-      if (! gimp_layer_check_scaling (layer, new_width, new_height))
+      if (! gimp_item_check_scaling (item, new_width, new_height))
 	return FALSE;
     }
 
diff --git a/app/core/gimpitem.c b/app/core/gimpitem.c
index 5a2e0ed58a..01f7a79b8c 100644
--- a/app/core/gimpitem.c
+++ b/app/core/gimpitem.c
@@ -368,6 +368,40 @@ gimp_item_offsets (const GimpItem *item,
   if (off_y) *off_y = item->offset_y;
 }
 
+/**
+ * gimp_item_check_scaling:
+ * @item:       Item to check
+ * @new_width:  proposed width of item, in pixels
+ * @new_height: proposed height of item, in pixels
+ *
+ * Scales item dimensions, then snaps them to pixel centers
+ *
+ * Returns: #FALSE if any dimension reduces to zero as a result 
+ *          of this; otherwise, returns #TRUE.
+ **/
+gboolean
+gimp_item_check_scaling (const GimpItem *item,
+                         gint            new_width,
+                         gint            new_height)
+{
+  GimpImage *gimage;
+  gdouble    img_scale_w;
+  gdouble    img_scale_h;
+  gint       new_item_width;
+  gint       new_item_height;
+
+  g_return_val_if_fail (GIMP_IS_ITEM (item), FALSE);
+
+  gimage = gimp_item_get_image (item);
+
+  img_scale_w     = (gdouble) new_width  / (gdouble) gimage->width;
+  img_scale_h     = (gdouble) new_height / (gdouble) gimage->height;
+  new_item_width  = ROUND (img_scale_w * (gdouble) item->width);
+  new_item_height = ROUND (img_scale_h * (gdouble) item->height);
+
+  return (new_item_width > 0 && new_item_height > 0);  
+}
+
 void
 gimp_item_scale (GimpItem              *item,
                  gint                   new_width,
@@ -389,6 +423,133 @@ gimp_item_scale (GimpItem              *item,
                      interpolation_type);
 }
 
+/**
+ * gimp_item_scale_by_factors:
+ * @item:     Item to be transformed by explicit width and height factors.
+ * @w_factor: scale factor to apply to width and horizontal offset
+ * @h_factor: scale factor to apply to height and vertical offset
+ * 
+ * Scales item dimensions and offsets by uniform width and
+ * height factors.
+ *
+ * Use gimp_item_scale_by_factors() in circumstances when the
+ * same width and height scaling factors are to be uniformly
+ * applied to a set of items. In this context, the item's
+ * dimensions and offsets from the sides of the containing
+ * image all change by these predetermined factors. By fiat,
+ * the fixed point of the transform is the upper left hand
+ * corner of the image. Returns gboolean FALSE if a requested
+ * scale factor is zero or if a scaling zero's out a item
+ * dimension; returns #TRUE otherwise.
+ *
+ * Use gimp_item_scale() in circumstances where new item width
+ * and height dimensions are predetermined instead.
+ *
+ * Side effects: Undo set created for item. Old item imagery 
+ *               scaled & painted to new item tiles. 
+ *
+ * Returns: #TRUE, if the scaled item has positive dimensions
+ *          #FALSE if the scaled item has at least one zero dimension
+ **/
+gboolean
+gimp_item_scale_by_factors (GimpItem              *item,
+                            gdouble                w_factor,
+                            gdouble                h_factor,
+                            GimpInterpolationType  interpolation_type)
+{
+  gint new_width, new_height;
+  gint new_offset_x, new_offset_y;
+
+  g_return_val_if_fail (GIMP_IS_ITEM (item), FALSE);
+
+  if (w_factor == 0.0 || h_factor == 0.0)
+    {
+      g_message ("gimp_item_scale_by_factors: Error. Requested width or height scale equals zero.");
+      return FALSE;
+    }
+
+  new_offset_x = ROUND (w_factor * (gdouble) item->offset_x);
+  new_offset_y = ROUND (h_factor * (gdouble) item->offset_y);
+  new_width    = ROUND (w_factor * (gdouble) item->width);
+  new_height   = ROUND (h_factor * (gdouble) item->height);
+
+  if (new_width != 0 && new_height != 0)
+    {
+      gimp_item_scale (item,
+                       new_width, new_height,
+                       new_offset_x, new_offset_y,
+                       interpolation_type);
+      return TRUE;
+    }
+
+  return FALSE;
+}
+
+/**
+ * gimp_item_scale_by_origin:
+ * @item:         The item to be transformed by width & height scale factors
+ * @new_width:    The width that item will acquire
+ * @new_height:   The height that the item will acquire
+ * @local_origin: sets fixed point of the scaling transform. See below.
+ *
+ * Sets item dimensions to new_width and
+ * new_height. Derives vertical and horizontal scaling
+ * transforms from new width and height. If local_origin is
+ * TRUE, the fixed point of the scaling transform coincides
+ * with the item's center point.  Otherwise, the fixed
+ * point is taken to be [-item->offset_x, -item->offset_y].
+ *
+ * Since this function derives scale factors from new and
+ * current item dimensions, these factors will vary from
+ * item to item because of aliasing artifacts; factor
+ * variations among items can be quite large where item
+ * dimensions approach pixel dimensions. Use 
+ * gimp_item_scale_by_factors() where constant scales are to
+ * be uniformly applied to a number of items.
+ *
+ * Side effects: undo set created for item.
+ *               Old item imagery scaled 
+ *               & painted to new item tiles 
+ **/
+void
+gimp_item_scale_by_origin (GimpItem              *item,
+                           gint                   new_width,
+                           gint                   new_height,
+                           GimpInterpolationType  interpolation_type,
+                           gboolean               local_origin)
+{
+  gint new_offset_x, new_offset_y;
+
+  g_return_if_fail (GIMP_IS_ITEM (item));
+
+  if (new_width == 0 || new_height == 0)
+    {
+      g_message ("gimp_layer_scale: Error. Requested width or height equals zero.");
+      return;
+    }
+
+  if (local_origin)
+    {
+      new_offset_x = item->offset_x + ((item->width  - new_width)  / 2.0);
+      new_offset_y = item->offset_y + ((item->height - new_height) / 2.0);
+    }
+  else
+    {
+      new_offset_x = (gint) (((gdouble) new_width * 
+                              (gdouble) item->offset_x / 
+                              (gdouble) item->width));
+
+      new_offset_y = (gint) (((gdouble) new_height * 
+                              (gdouble) item->offset_y / 
+                              (gdouble) item->height));
+    }
+
+  gimp_item_scale (item,
+                   new_width, new_height,
+                   new_offset_x, new_offset_y,
+                   interpolation_type);
+}
+
 void
 gimp_item_resize (GimpItem *item,
                   gint      new_width,
diff --git a/app/core/gimpitem.h b/app/core/gimpitem.h
index 4abf6535a5..3267d53038 100644
--- a/app/core/gimpitem.h
+++ b/app/core/gimpitem.h
@@ -80,63 +80,75 @@ struct _GimpItemClass
 };
 
 
-GType           gimp_item_get_type        (void) G_GNUC_CONST;
+GType           gimp_item_get_type         (void) G_GNUC_CONST;
 
-void            gimp_item_removed         (GimpItem       *item);
+void            gimp_item_removed          (GimpItem       *item);
 
-void            gimp_item_configure       (GimpItem       *item,
-                                           GimpImage      *gimage,
-                                           gint            offset_x,
-                                           gint            offset_y,
-                                           gint            width,
-                                           gint            height,
-                                           const gchar    *name);
-GimpItem      * gimp_item_duplicate       (GimpItem       *item,
-                                           GType           new_type,
-                                           gboolean        add_alpha);
+void            gimp_item_configure        (GimpItem       *item,
+                                            GimpImage      *gimage,
+                                            gint            offset_x,
+                                            gint            offset_y,
+                                            gint            width,
+                                            gint            height,
+                                            const gchar    *name);
+GimpItem      * gimp_item_duplicate        (GimpItem       *item,
+                                            GType           new_type,
+                                            gboolean        add_alpha);
 
-void            gimp_item_rename          (GimpItem       *item,
-                                           const gchar    *new_name);
+void            gimp_item_rename           (GimpItem       *item,
+                                            const gchar    *new_name);
 
-gint            gimp_item_width           (const GimpItem *item);
-gint            gimp_item_height          (const GimpItem *item);
-void            gimp_item_offsets         (const GimpItem *item,
-                                           gint           *offset_x,
-                                           gint           *offset_y);
+gint            gimp_item_width            (const GimpItem *item);
+gint            gimp_item_height           (const GimpItem *item);
+void            gimp_item_offsets          (const GimpItem *item,
+                                            gint           *offset_x,
+                                            gint           *offset_y);
 
-void            gimp_item_scale           (GimpItem       *item,
-                                           gint            new_width,
-                                           gint            new_height,
-                                           gint            new_offset_x,
-                                           gint            new_offset_y,
-                                           GimpInterpolationType  interp_type);
-void            gimp_item_resize          (GimpItem       *item,
-                                           gint            new_width,
-                                           gint            new_height,
-                                           gint            offset_x,
-                                           gint            offset_y);
-void            gimp_item_resize_to_image (GimpItem       *item);
+gboolean        gimp_item_check_scaling    (const GimpItem *layer,
+                                            gint            new_width,
+                                            gint            new_height);
+void            gimp_item_scale            (GimpItem       *item,
+                                            gint            new_width,
+                                            gint            new_height,
+                                            gint            new_offset_x,
+                                            gint            new_offset_y,
+                                            GimpInterpolationType  interp_type);
+gboolean        gimp_item_scale_by_factors (GimpItem       *item,
+                                            gdouble         w_factor, 
+                                            gdouble         h_factor,
+                                            GimpInterpolationType interp_type);
+void            gimp_item_scale_by_origin  (GimpItem       *item,
+                                            gint            new_width,
+                                            gint            new_height,
+                                            GimpInterpolationType interp_type,
+                                            gboolean        local_origin);
+void            gimp_item_resize           (GimpItem       *item,
+                                            gint            new_width,
+                                            gint            new_height,
+                                            gint            offset_x,
+                                            gint            offset_y);
+void            gimp_item_resize_to_image  (GimpItem       *item);
 
-gint            gimp_item_get_ID          (GimpItem       *item);
-GimpItem      * gimp_item_get_by_ID       (Gimp           *gimp,
-                                           gint            id);
+gint            gimp_item_get_ID           (GimpItem       *item);
+GimpItem      * gimp_item_get_by_ID        (Gimp           *gimp,
+                                            gint            id);
 
-GimpTattoo      gimp_item_get_tattoo      (const GimpItem *item);
-void            gimp_item_set_tattoo      (GimpItem       *item,
-                                           GimpTattoo      tattoo);
+GimpTattoo      gimp_item_get_tattoo       (const GimpItem *item);
+void            gimp_item_set_tattoo       (GimpItem       *item,
+                                            GimpTattoo      tattoo);
 
-GimpImage     * gimp_item_get_image       (const GimpItem *item);
-void            gimp_item_set_image       (GimpItem       *item,
-                                           GimpImage      *gimage);
+GimpImage     * gimp_item_get_image        (const GimpItem *item);
+void            gimp_item_set_image        (GimpItem       *item,
+                                            GimpImage      *gimage);
 
-void            gimp_item_parasite_attach (GimpItem       *item,
-                                           GimpParasite   *parasite);
-void            gimp_item_parasite_detach (GimpItem       *item,
-                                           const gchar    *name);
-GimpParasite  * gimp_item_parasite_find   (const GimpItem *item,
-                                           const gchar    *name);
-gchar        ** gimp_item_parasite_list   (const GimpItem *item,
-                                           gint           *count);
+void            gimp_item_parasite_attach  (GimpItem       *item,
+                                            GimpParasite   *parasite);
+void            gimp_item_parasite_detach  (GimpItem       *item,
+                                            const gchar    *name);
+GimpParasite  * gimp_item_parasite_find    (const GimpItem *item,
+                                            const gchar    *name);
+gchar        ** gimp_item_parasite_list    (const GimpItem *item,
+                                            gint           *count);
 
 
 #endif /* __GIMP_ITEM_H__ */
diff --git a/app/core/gimplayer.c b/app/core/gimplayer.c
index 3db1907193..c61d4d7f72 100644
--- a/app/core/gimplayer.c
+++ b/app/core/gimplayer.c
@@ -1109,175 +1109,7 @@ gimp_layer_add_alpha (GimpLayer *layer)
   gimage = gimp_item_get_image (GIMP_ITEM (layer));
 
   if (gimp_container_num_children (gimage->layers) == 1)
-    {
-      gimp_image_alpha_changed (gimage);
-    }
-}
-
-/**
- * gimp_layer_check_scaling:
- * @layer:      Layer to check
- * @new_width:  proposed width of layer's image, in pixels
- * @new_height: proposed height of layer's image, in pixels
- *
- * Scales layer dimensions, then snaps them to pixel centers
- *
- * Returns: #FALSE if any dimension reduces to zero as a result 
- *          of this; otherwise, returns #TRUE.
- **/
-gboolean
-gimp_layer_check_scaling (const GimpLayer *layer,
-			  gint             new_width,
-			  gint             new_height)
-{
-  GimpImage *gimage;
-  gdouble    img_scale_w;
-  gdouble    img_scale_h;
-  gint       new_layer_width;
-  gint       new_layer_height;
-
-  g_return_val_if_fail (GIMP_IS_LAYER (layer), FALSE);
-
-  gimage           = gimp_item_get_image (GIMP_ITEM (layer));
-  img_scale_w      = (gdouble) new_width  / (gdouble) gimage->width;
-  img_scale_h      = (gdouble) new_height / (gdouble) gimage->height;
-  new_layer_width  = ROUND (img_scale_w *
-                            (gdouble) GIMP_ITEM (layer)->width);
-  new_layer_height = ROUND (img_scale_h *
-                            (gdouble) GIMP_ITEM (layer)->height);
-
-  return (new_layer_width != 0 && new_layer_height != 0);  
-}
-
-/**
- * gimp_layer_scale_by_factors:
- * @layer:    Layer to be transformed by explicit width and height factors.
- * @w_factor: scale factor to apply to width and horizontal offset
- * @h_factor: scale factor to apply to height and vertical offset
- * 
- * Scales layer dimensions and offsets by uniform width and
- * height factors.
- *
- * Use gimp_layer_scale_by_factors() in circumstances when the
- * same width and height scaling factors are to be uniformly
- * applied to a set of layers. In this context, the layer's
- * dimensions and offsets from the sides of the containing
- * image all change by these predetermined factors. By fiat,
- * the fixed point of the transform is the upper left hand
- * corner of the image. Returns gboolean FALSE if a requested
- * scale factor is zero or if a scaling zero's out a layer
- * dimension; returns #TRUE otherwise.
- *
- * Use gimp_layer_scale() in circumstances where new layer width
- * and height dimensions are predetermined instead.
- *
- * Side effects: Undo set created for layer. Old layer imagery 
- *               scaled & painted to new layer tiles. 
- *
- * Returns: #TRUE, if the scaled layer has positive dimensions
- *          #FALSE if the scaled layer has at least one zero dimension
- **/
-gboolean
-gimp_layer_scale_by_factors (GimpLayer             *layer,
-			     gdouble                w_factor,
-			     gdouble                h_factor,
-                             GimpInterpolationType  interpolation_type)
-{
-  gint new_width, new_height;
-  gint new_offset_x, new_offset_y;
-
-  g_return_val_if_fail (GIMP_IS_LAYER (layer), FALSE);
-
-  if (w_factor == 0.0 || h_factor == 0.0)
-    {
-      g_message ("gimp_layer_scale_by_factors: Error. Requested width or height scale equals zero.");
-      return FALSE;
-    }
-
-  new_offset_x = ROUND (w_factor * (gdouble) GIMP_ITEM (layer)->offset_x);
-  new_offset_y = ROUND (h_factor * (gdouble) GIMP_ITEM (layer)->offset_y);
-  new_width    = ROUND (w_factor * (gdouble) GIMP_ITEM (layer)->width);
-  new_height   = ROUND (h_factor * (gdouble) GIMP_ITEM (layer)->height);
-
-  if (new_width != 0 && new_height != 0)
-    {
-      gimp_item_scale (GIMP_ITEM (layer),
-                       new_width, new_height,
-                       new_offset_x, new_offset_y,
-                       interpolation_type);
-      return TRUE;
-    }
-
-  return FALSE;
-}
-
-/**
- * gimp_layer_scale_by_origin:
- * @layer:        The layer to be transformed by width & height scale factors
- * @new_width:    The width that layer will acquire
- * @new_height:   The height that the layer will acquire
- * @local_origin: sets fixed point of the scaling transform. See below.
- *
- * Sets layer dimensions to new_width and
- * new_height. Derives vertical and horizontal scaling
- * transforms from new width and height. If local_origin is
- * TRUE, the fixed point of the scaling transform coincides
- * with the layer's center point.  Otherwise, the fixed
- * point is taken to be [-GIMP_DRAWABLE(layer)->offset_x,
- * -GIMP_DRAWABLE(layer)->offset_y].
- *
- * Since this function derives scale factors from new and
- * current layer dimensions, these factors will vary from
- * layer to layer because of aliasing artifacts; factor
- * variations among layers can be quite large where layer
- * dimensions approach pixel dimensions. Use 
- * gimp_layer_scale_by_factors() where constant scales are to
- * be uniformly applied to a number of layers.
- *
- * Side effects: undo set created for layer.
- *               Old layer imagery scaled 
- *               & painted to new layer tiles 
- **/
-void
-gimp_layer_scale_by_origin (GimpLayer             *layer,
-                            gint                   new_width,
-                            gint                   new_height,
-                            GimpInterpolationType  interpolation_type,
-                            gboolean               local_origin)
-{
-  gint new_offset_x, new_offset_y;
-
-  g_return_if_fail (GIMP_IS_LAYER (layer));
-
-  if (new_width == 0 || new_height == 0)
-    {
-      g_message ("gimp_layer_scale: Error. Requested width or height equals zero.");
-      return;
-    }
-
-  if (local_origin)
-    {
-      new_offset_x = GIMP_ITEM (layer)->offset_x + 
-	((GIMP_ITEM (layer)->width  - new_width) / 2.0);
-
-      new_offset_y = GIMP_ITEM (layer)->offset_y + 
-	((GIMP_ITEM (layer)->height - new_height) / 2.0);
-    }
-  else
-    {
-      new_offset_x = (gint) (((gdouble) new_width * 
-                              GIMP_ITEM (layer)->offset_x / 
-                              (gdouble) GIMP_ITEM (layer)->width));
-
-      new_offset_y = (gint) (((gdouble) new_height * 
-                              GIMP_ITEM (layer)->offset_y / 
-                              (gdouble) GIMP_ITEM (layer)->height));
-    }
-
-  gimp_item_scale (GIMP_ITEM (layer), 
-                   new_width, new_height, 
-                   new_offset_x, new_offset_y,
-                   interpolation_type);
+    gimp_image_alpha_changed (gimage);
 }
 
 void
diff --git a/app/core/gimplayer.h b/app/core/gimplayer.h
index a0ef831d8f..ce4d2574cd 100644
--- a/app/core/gimplayer.h
+++ b/app/core/gimplayer.h
@@ -91,9 +91,6 @@ GimpLayer     * gimp_layer_new_from_tiles      (TileManager          *tiles,
 GimpLayer     * gimp_layer_new_from_drawable   (GimpDrawable         *drawable,
                                                 GimpImage            *dest_image);
 
-gboolean        gimp_layer_check_scaling       (const GimpLayer      *layer,
-                                                gint                  new_width,
-                                                gint                  new_height);
 GimpLayerMask * gimp_layer_create_mask         (const GimpLayer      *layer,
                                                 GimpAddMaskType        mask_type);
 GimpLayerMask * gimp_layer_add_mask            (GimpLayer            *layer,
@@ -107,15 +104,6 @@ void            gimp_layer_translate           (GimpLayer            *layer,
                                                 gint                  off_y,
                                                 gboolean              push_undo);
 void            gimp_layer_add_alpha           (GimpLayer            *layer);
-gboolean        gimp_layer_scale_by_factors    (GimpLayer            *layer, 
-                                                gdouble               w_factor, 
-                                                gdouble               h_factor,
-                                                GimpInterpolationType interpolation_type);
-void            gimp_layer_scale_by_origin     (GimpLayer            *layer, 
-                                                gint                  new_width,
-                                                gint                  new_height,
-                                                GimpInterpolationType interpolation_type,
-                                                gboolean              local_origin);
 
 void            gimp_layer_resize_to_image     (GimpLayer            *layer);
 BoundSeg      * gimp_layer_boundary            (GimpLayer            *layer, 
diff --git a/app/gui/layers-commands.c b/app/gui/layers-commands.c
index 0604bb5892..2789582514 100644
--- a/app/gui/layers-commands.c
+++ b/app/gui/layers-commands.c
@@ -943,11 +943,11 @@ scale_layer_query_ok_callback (GtkWidget *widget,
               floating_sel_relax (layer, TRUE);
             }
 
-	  gimp_layer_scale_by_origin (layer, 
-                                      options->resize->width,
-                                      options->resize->height,
-                                      options->resize->interpolation,
-                                      TRUE);
+	  gimp_item_scale_by_origin (GIMP_ITEM (layer),
+                                     options->resize->width,
+                                     options->resize->height,
+                                     options->resize->interpolation,
+                                     TRUE);
 
 	  if (gimp_layer_is_floating_sel (layer))
             {
diff --git a/app/pdb/layer_cmds.c b/app/pdb/layer_cmds.c
index 9f901d8457..9e1680ccdf 100644
--- a/app/pdb/layer_cmds.c
+++ b/app/pdb/layer_cmds.c
@@ -407,7 +407,7 @@ layer_scale_invoker (Gimp     *gimp,
 	  if (floating_layer)
 	    floating_sel_relax (floating_layer, TRUE);
     
-	  gimp_layer_scale_by_origin (layer, new_width, new_height, gimp->config->interpolation_type, local_origin);
+	  gimp_item_scale_by_origin (GIMP_ITEM (layer), new_width, new_height, gimp->config->interpolation_type, local_origin);
     
 	  if (floating_layer)
 	    floating_sel_rigor (floating_layer, TRUE);
diff --git a/tools/pdbgen/pdb/layer.pdb b/tools/pdbgen/pdb/layer.pdb
index be8df9f07d..117aefa0da 100644
--- a/tools/pdbgen/pdb/layer.pdb
+++ b/tools/pdbgen/pdb/layer.pdb
@@ -100,7 +100,7 @@ HELP
 
     if ($op eq 'scale') {
         &layer_change_invoke("LAYER_\U$op\E", 'Scale Layer',
-			     "gimp_layer_scale_by_origin (layer, new_width, new_height, gimp->config->interpolation_type, $args);");
+			     "gimp_item_scale_by_origin (GIMP_ITEM (layer), new_width, new_height, gimp->config->interpolation_type, $args);");
     } else {
         &layer_change_invoke("LAYER_\U$op\E", 'Resize Layer',
 			     "gimp_item_resize (GIMP_ITEM (layer), new_width, new_height, $args);");