Fatti: A. Negli anni 2006/2007 C._ ha stipulato un contratto con la B.A._ SA (ora A.A._ SA) per la fornitura e la posa di una veranda sulla terrazza di un immobile di sua proprietà a Gordola, al prezzo di fr. 68'000.--. Egli ha preso accordi separati con la D._ AG per l'esecuzione del basamento. Della procedura di rilascio del permesso di costruzione si è occupato l'architetto E._. I lavori sono iniziati nella primavera 2007. Nel mese di maggio 2007 il committente ha segnalato la presenza di difetti, in particolare di infiltrazioni di acqua. La B.A._ SA ha contestato la propria responsabilità, ha comunicato la sospensione dei lavori fino al chiarimento della situazione e ha avvertito che le infiltrazioni le avevano causato spese supplementari. Il 23 agosto 2007 essa ha emesso una fattura di fr. 68'000.-- per la fornitura e la posa della veranda e una di fr. 3'927.40 per le prestazioni supplementari. Tenuto conto degli acconti versati il saldo a suo favore era di fr. 17'527.40. B. Nel frattempo C._ aveva chiesto un parere peritale. Il referto, datato 27 agosto 2007, ha accertato le infiltrazioni di acqua e attribuito la responsabilità alla B.A._ SA quale progettista ed esecutrice dei serramenti. Il 29 agosto 2007 C._ ha inviato la perizia alla B.A._ SA comunicandole che non avrebbe pagato le sue fatture, assegnandole un termine fino al 7 settembre 2007 per terminare l'opera ed eliminare i difetti e avvertendola che, se ciò non fosse avvenuto, avrebbe rescisso il contratto, incaricato del lavoro un terzo e chiesto il risarcimento di spese e danni secondo l'art. 366 CO. Il 13 settembre 2007 C._, dopo che la B.A._ SA, pur contestando le conclusioni peritali, si era dichiarata disponibile a chiarire la causa dei difetti, ha chiesto al Pretore di Locarno-Campagna l'assunzione di una perizia a futura memoria. Consegnata il 13 maggio 2008, essa ha accertato un difetto di impermeabilizzazione riconducibile al prodotto isolante inadatto utilizzato dalla D._ AG, la posa di guarnizioni difettose e di vetri diversi da quelli offerti, nonché un problema di surriscaldamento della veranda. Questo perito ha inoltre riscontrato carenze nella visione d'insieme dell'opera e nella coordinazione tra artigiani. C. Il 4 marzo 2009 B.A._ SA ha convenuto in giudizio C._ davanti alla Pretura di Locarno-Campagna, chiedendo il pagamento del saldo della mercede di fr. 17'527.40 e la rifusione delle spese pre-processuali di fr. 3'722.10. Il convenuto si è opposto alla petizione, asserendo che i lavori non sono stati ultimati e che i difetti sono imputabili all'attrice. In via riconvenzionale egli ha chiesto la condanna dell'attrice a pagargli fr. 81'181.05 - aumentati a fr. 116'181.05 con la replica riconvenzionale - quale risarcimento dei costi di riparazione dell'opera difettosa, degli oneri legali pre-processuali, delle spese della perizia a futura memoria e del mancato uso della terrazza. Una nuova perizia giudiziaria del 17 agosto 2012, ordinata dal Pretore in corso di causa, ha confermato l'esistenza dei difetti, con la responsabilità preponderante della B.A._ SA, e ha rilevato che il ripristino di un'opera a regola d'arte comportava lo smantellamento e il rifacimento completo della terrazza. Il 12 marzo 2018 il Pretore ha respinto la petizione e, in accoglimento parziale della riconvenzione, ha condannato la B.A._ SA a pagare a C._ fr. 107'372.--. Con sentenza del 9 dicembre 2019 la II Camera civile del Tribunale di appello ticinese ha confermato la reiezione della petizione e ridotto a fr. 95'372.-- la somma dovuta a C._ dalla B.A._ SA, che nel frattempo aveva cambiato la ragione sociale in A.A._ SA. D. La A.A._ SA insorge ora davanti al Tribunale federale con ricorso in materia civile del 29 gennaio 2020. Chiede d'un canto che C._ sia condannato a pagarle fr. 21'249.50, dall'altro la reiezione dell'azione riconvenzionale. Con risposta del 2 marzo 2020 C._ propone di respingere il ricorso. La ricorrente ha presentato brevi osservazioni di replica. L'autorità cantonale non si è pronunciata.