diff --git a/clutter/clutter-offscreen-effect.c b/clutter/clutter-offscreen-effect.c
index d58227fdd..8d8c8522b 100644
--- a/clutter/clutter-offscreen-effect.c
+++ b/clutter/clutter-offscreen-effect.c
@@ -598,6 +598,8 @@ clutter_offscreen_effect_create_texture (ClutterOffscreenEffect *effect,
* and %FALSE otherwise
*
* Since: 1.8
+ *
+ * Deprecated: 1.14: Use clutter_offscreen_effect_get_target_rect() instead
*/
gboolean
clutter_offscreen_effect_get_target_size (ClutterOffscreenEffect *effect,
@@ -621,3 +623,43 @@ clutter_offscreen_effect_get_target_size (ClutterOffscreenEffect *effect,
return TRUE;
}
+
+/**
+ * clutter_offscreen_effect_get_target_rect:
+ * @effect: a #ClutterOffscreenEffect
+ * @rect: (out caller-allocates): return location for the target area
+ *
+ * Retrieves the origin and size of the offscreen buffer used by @effect to
+ * paint the actor to which it has been applied.
+ *
+ * This function should only be called by #ClutterOffscreenEffect
+ * implementations, from within the paint_target()
+ * virtual function.
+ *
+ * Return value: %TRUE if the offscreen buffer has a valid rectangle,
+ * and %FALSE otherwise
+ *
+ * Since: 1.14
+ */
+gboolean
+clutter_offscreen_effect_get_target_rect (ClutterOffscreenEffect *effect,
+ ClutterRect *rect)
+{
+ ClutterOffscreenEffectPrivate *priv;
+
+ g_return_val_if_fail (CLUTTER_IS_OFFSCREEN_EFFECT (effect), FALSE);
+ g_return_val_if_fail (rect != NULL, FALSE);
+
+ priv = effect->priv;
+
+ if (priv->texture == NULL)
+ return FALSE;
+
+ clutter_rect_init (rect,
+ priv->x_offset,
+ priv->y_offset,
+ cogl_texture_get_width (priv->texture),
+ cogl_texture_get_height (priv->texture));
+
+ return TRUE;
+}
diff --git a/clutter/clutter-offscreen-effect.h b/clutter/clutter-offscreen-effect.h
index a5987d754..6e70cbe45 100644
--- a/clutter/clutter-offscreen-effect.h
+++ b/clutter/clutter-offscreen-effect.h
@@ -103,10 +103,16 @@ void clutter_offscreen_effect_paint_target (ClutterOffscree
CoglHandle clutter_offscreen_effect_create_texture (ClutterOffscreenEffect *effect,
gfloat width,
gfloat height);
+
+CLUTTER_DEPRECATED_IN_1_14_FOR (clutter_offscreen_effect_get_target_rect)
gboolean clutter_offscreen_effect_get_target_size (ClutterOffscreenEffect *effect,
gfloat *width,
gfloat *height);
+CLUTTER_AVAILABLE_IN_1_14
+gboolean clutter_offscreen_effect_get_target_rect (ClutterOffscreenEffect *effect,
+ ClutterRect *rect);
+
G_END_DECLS
#endif /* __CLUTTER_OFFSCREEN_EFFECT_H__ */
diff --git a/clutter/clutter.symbols b/clutter/clutter.symbols
index 37b0ce35d..ecb8ff567 100644
--- a/clutter/clutter.symbols
+++ b/clutter/clutter.symbols
@@ -981,6 +981,7 @@ clutter_model_set_types
clutter_modifier_type_get_type
clutter_offscreen_effect_create_texture
clutter_offscreen_effect_get_target
+clutter_offscreen_effect_get_target_rect
clutter_offscreen_effect_get_target_size
clutter_offscreen_effect_get_texture
clutter_offscreen_effect_get_type
diff --git a/doc/reference/clutter/clutter-sections.txt b/doc/reference/clutter/clutter-sections.txt
index 1e4471a9c..3c5473fa7 100644
--- a/doc/reference/clutter/clutter-sections.txt
+++ b/doc/reference/clutter/clutter-sections.txt
@@ -2746,6 +2746,7 @@ clutter_offscreen_effect_get_texture
clutter_offscreen_effect_create_texture
clutter_offscreen_effect_paint_target
clutter_offscreen_effect_get_target_size
+clutter_offscreen_effect_get_target_rect
CLUTTER_TYPE_OFFSCREEN_EFFECT
CLUTTER_OFFSCREEN_EFFECT