The patch is OK, this mail is just an answer to Henri's comment.
+static BOOL color_in_range(const struct wined3d_color_key *color_key, DWORD color)
+{
+ /* FIXME: Is this really how color keys are supposed to work? I think it
+ * makes more sense to compare the individual channels. */
+ return color >= color_key->color_space_low_value
+ && color <= color_key->color_space_high_value;
+}