diff --git a/repos/os/include/os/pixel_rgba.h b/repos/os/include/os/pixel_rgba.h
index e3fc986c5c..8e27cffe5a 100644
--- a/repos/os/include/os/pixel_rgba.h
+++ b/repos/os/include/os/pixel_rgba.h
@@ -116,6 +116,23 @@ class Genode::Pixel_rgba
 		                             Pixel_rgba p3, Pixel_rgba p4) {
 			return avr(avr(p1, p2), avr(p3, p4)); }
 
+		/**
+		 * Copy pixel with alpha
+		 *
+		 * \param src    source color value (e.g., obtained from a texture)
+		 * \param src_a  alpha value corresponding to the 'src' pixel
+		 * \param alpha  alpha value
+		 * \param dst    destination pixel
+		 */
+		template <typename TPT, typename PT>
+		static void transfer(TPT const &src, int src_a, int alpha, PT &dst)
+		{
+			if (src_a) {
+				int register a = (src_a * alpha)>>8;
+				if (a) dst = PT::mix(dst, src, a);
+			}
+		}
+
 		/**
 		 * Return alpha value of pixel
 		 */