Pittore, scenografo e costumista, nasce a Piangipane (Ravenna). Debutta nella lirica con Giovanna D’Arco al rogo di Honegger-Claudel, regia di Franco Enriquez.
Dal 1968 realizza con il GRANTEATRO diretto da Carlo Cecchi numerose produzioni di spettacoli teatrali come Woyzeck di G. Büchner, La Cimice di Majakovskj, L’uomo, la bestia, la virtù di L. Pirandello, Il borghese gentiluomo di Molière, La Mandragola di Macchiavelli, Ivanov di Cechov, La tempesta di W. Shakespeare, L’Amante di H. Pinter, Il Misantropo di Molière, Misura per misura di W. Shakespeare. Nel 1985, sempre con la regia di Carlo Cecchi, realizza al Teatro Comunale di Treviso La traviata di G. Verdi, diretto da Tiziano Severini. Ha collaborato inoltre con altri registi di prosa come Giampiero Solari, Marco Lucchesi, Ugo Gregoretti, Giggi Dall’Aglio, Marco Martinelli, Nora Venturini, Enrico Lamanna, Giuseppe Cederna, Adriana Martino, Paolo Rossi e Gigi Proietti.
Nel 1999 inizia il sodalizio con Mario Martone curando le scene per Così fan tutte al San Carlo e al Comunale di Ferrara con Claudio Abbado. Seguono Lulu al Teatro Massimo di Palermo, direzione di Stefan Anton Reck, Don Giovanni al San Carlo di Napoli, diretto da Gabriele Ferro, dove disegna anche i costumi e le maschere (Premio ABBIATI), Un ballo in maschera con Antonio Pappano al Covent Garden, Le nozze di Figaro, diretto da Jeffrey Tate, al San Carlo, Antigone al Maggio Fiorentino, diretto da Michel Tabachnik, Falstaff (2008) al Théâtre des Champs-Élysées, diretto da Daniele Gatti, Cavalleria Rustiacana e Pagliacci, diretti da Daniel Harding alla Scala, Fidelio (2011) al Teatro Regio di Torino, Luisa Miller (2012), entrambi con la direzione di Gianandrea Noseda, e Oberto (2013) alla Scala di Milano, diretto da Riccardo Frizza.
Nel 2008 firma le scene per Il matrimonio inaspettato, a Salisburgo, diretto da Riccardo Muti e Maria Stuarda al San Carlo, entrambi con la regia di Andrea De Rosa.
Nel 2013 vince il Premio Abbiati per Cavalleria Rusticana al San Carlo con la regia di Pippo Delbono, cura le scene di Elektra di Richard Strauss al Petruzzelli, con la regia di Gianni Amelio e diretto da Jonathan Nott, Circo Equestre Sgueglia con la regia di Alfredo Arias per il Napoli Teatro Festival, Il Trovatore al Teatro Municipal di San Paulo, diretto da John Neschling e con la regia di Andrea De Rosa. Nello stesso anno realizza le scene per La dodicesima notte, con la regia di Carlo Cecchi e per Aureliano in Palmira al Rossini Opera Festival, con la regia di Mario Martone e la direzione Will Crutchfield.
Nel 2015 disegna e cura le scene per Carmen di Enzo Moscato, regia di Mario Martone, per Luisa Miller di Giuseppe Verdi al Teatro di San Carlo Napoli, regia Andrea de Rosa e direzione di Daniele Rustioni, e per The Bassarids (Premio Abbiati per il miglior spettacolo) al Teatro dell’Opera di Roma, regia di Mario Martone e direzione di Stephan Soltez.
Nel novembre 2016 disegna e cura le scene per il riallestimento di Cavalleria Rusticana di Pietro Mascagni e Sancta Susanna di Paul Hindemith all’Opera Bastille di Parigi, regia di Mario Martone e direzione Carlo Rizzi. È poi del marzo 2017 la realizzazione delle scene di Maria Sturda con la regia di Andrea De Rosa per il Teatro dell’Opera di Roma, per il quale firma nel 2018 le scene di Pagliacci con la regia di Pippo Delbono. Nel 2019 disegna e cura le scene per Madame Butterfly con la regia di Ferzan Ozpetek per il Teatro di San Carlo di Napoli.
Tra i lavori di prosa più recenti, si ricorda la firma per le scene di Dolore sotto chiave di Eduardo De Filippo con la regia di Carlo Cecchi.