Your schema looks pretty good to me.
I'm not sure what your concern is about Participant and MovieInGenre. You need these entities to create the many-to-many relationships.
Whenever you have three tables with A <- M:1 -> B <- 1:M -> C (if you see what I'm trying to write there without drawing a diagram), that indicates that the A/C relationship is M:M and B exists just to implement that relationship. You can also draw your diagram omitting a table like MovieInGenre and just directly showing a M:M relationship between Movie and Genre. At some point you need to create the table to implement the relationship, but you don't need to show it on your diagram. I normally do not include such entities on my diagrams, as they're just clutter.
What do you mean by "role". If "role" is the name of the character the person plays, then this is fine. If role is something like "director", "producer", "actor", etc, i.e. chosen from a list of standard values, then there should be another table for that and you just post a foreign key. If it's both or either, than that's a bad idea and it should be broken into two fields.