diff --git a/source/blender/editors/include/UI_interface_c.hh b/source/blender/editors/include/UI_interface_c.hh
index b736a2d7cf0..a2b5bf9b6b0 100644
--- a/source/blender/editors/include/UI_interface_c.hh
+++ b/source/blender/editors/include/UI_interface_c.hh
@@ -2433,6 +2433,9 @@ void uiTemplatePreview(uiLayout *layout,
                        MTex *slot,
                        const char *preview_id);
 void uiTemplateColorRamp(uiLayout *layout, PointerRNA *ptr, const char *propname, bool expand);
+
+void uiTemplateImageUI(uiLayout *layout, int image_id, float image_scale);
+
 /**
  * \param icon_scale: Scale of the icon, 1x == button height.
  */
diff --git a/source/blender/editors/interface/interface_templates.cc b/source/blender/editors/interface/interface_templates.cc
index 16bd571818b..db80180a653 100644
--- a/source/blender/editors/interface/interface_templates.cc
+++ b/source/blender/editors/interface/interface_templates.cc
@@ -78,6 +78,9 @@
 #include "ED_render.hh"
 #include "ED_screen.hh"
 #include "ED_undo.hh"
+#include "ED_datafiles.h"
+
+#include "IMB_imbuf.h"
 
 #include "RE_engine.h"
 
@@ -93,6 +96,8 @@
 #include "UI_view2d.hh"
 #include "interface_intern.hh"
 
+#include "BPY_extern.h"
+
 #include "PIL_time.h"
 
 /* we may want to make this optional, disable for now. */
@@ -3369,6 +3374,28 @@ void uiTemplatePreview(uiLayout *layout,
 
 /** \} */
 
+void uiTemplateImageUI(uiLayout* layout, int image_id,float image_scale) {
+
+  ImBuf *ibuf = IMB_dupImBuf((ImBuf *) BPY_utils_images_get(image_id));
+
+  if (ibuf) {
+    int width = ibuf->x * image_scale;
+    int height = (width * ibuf->y) / ibuf->x;
+
+    IMB_premultiply_alpha(ibuf);
+    IMB_scaleImBuf(ibuf, width, height);
+
+    bTheme *btheme = UI_GetTheme();
+    uchar *color = btheme->tui.wcol_menu_back.text_sel;
+    //color = btheme->tui.wcol_box.inner;
+
+    uiBlock *block = uiLayoutAbsoluteBlock(layout);
+
+    uiBut *but = uiDefButImage(block, ibuf, 0, U.widget_unit, width, height, color);
+
+  }
+}
+
 /* -------------------------------------------------------------------- */
 /** \name ColorRamp Template
  * \{ */
diff --git a/source/blender/makesrna/intern/rna_ui_api.cc b/source/blender/makesrna/intern/rna_ui_api.cc
index b04e1ba5c3b..88311532e05 100644
--- a/source/blender/makesrna/intern/rna_ui_api.cc
+++ b/source/blender/makesrna/intern/rna_ui_api.cc
@@ -1666,6 +1666,21 @@ void RNA_api_ui_layout(StructRNA *srna)
                 1.0f,
                 100.0f);
 
+
+  func = RNA_def_function(srna, "template_image_ui", "uiTemplateImageUI");
+  RNA_def_function_ui_description(func, "A image on UI");
+  parm = RNA_def_int(func, "image_value", 0, 0, INT_MAX, "image to display", "", 0, INT_MAX);
+  RNA_def_parameter_flags(parm, PropertyFlag(0), PARM_REQUIRED);
+  RNA_def_float(func,
+                "scale",
+                1.0f,
+                1.0f,
+                100.0f,
+                "Scale",
+                "Scale the icon size (by the button size)",
+                1.0f,
+                100.0f);
+
   func = RNA_def_function(srna, "template_icon_view", "uiTemplateIconView");
   RNA_def_function_ui_description(func, "Enum. Large widget showing Icon previews");
   api_ui_item_rna_common(func);
diff --git a/source/blender/mblender/patches/MB_0015.h b/source/blender/mblender/patches/MB_0015.h
new file mode 100644
index 00000000000..ddf2a41c228
--- /dev/null
+++ b/source/blender/mblender/patches/MB_0015.h
@@ -0,0 +1 @@
+/* Empty File */
