diff --git a/interface.go b/interface.go
index 5f48f65d91f97b22933f0ffbbcbcbca199e4819d..5287a1d6c6fb6e090fe8e14a5f81bfaca18ad0de 100644
--- a/interface.go
+++ b/interface.go
@@ -38,6 +38,30 @@ type BasicTarget interface {
 	SetColorMask(color.Color)
 }
 
+// ComposeTarget is a BasicTarget capable of Porter-Duff composition.
+type ComposeTarget interface {
+	BasicTarget
+
+	// SetComposeMethod sets a Porter-Duff composition method to be used.
+	SetComposeMethod(ComposeMethod)
+}
+
+// ComposeMethod is a Porter-Duff composition method.
+type ComposeMethod int
+
+// Here's the list of all available Porter-Duff composition methods. User ComposeOver for the basic
+// alpha blending.
+const (
+	ComposeOver ComposeMethod = iota
+	ComposeIn
+	ComposeOut
+	ComposeAtop
+	ComposeDstIn
+	ComposeDstOut
+	ComposeDstAtop
+	ComposeXor
+)
+
 // Triangles represents a list of vertices, where each three vertices form a triangle. (First,
 // second and third is the first triangle, fourth, fifth and sixth is the second triangle, etc.)
 type Triangles interface {