Sachverhalt: A. Am 14. Juli 2016 füllte ein Chauffeur der B._ AG den Heizöltank eines Wohnhauses in U._ auf. Zwei Tage vorher hatte ein Fachmann der A._ AG eine Tankkontrolle durchgeführt. Beim Betankungsvorgang kam es zur Überfüllung. Dabei flossen mehrere hundert Liter Heizöl über die Druckausgleichsleitung an der Gebäudefassade in den Aussenbereich und verunreinigten den Untergrund. Das Ereignis wurde umgehend der Polizei Kanton Solothurn und dem Schadendienst des kantonalen Amts für Umwelt (AfU) gemeldet. Das belastete Boden- und Untergrundmaterial (ca. 56 m 3) wurde in der Folge ausgehoben und sachgerecht entsorgt. Dem Kanton Solothurn entstanden Kosten von Fr. 42'957.60 für die Feststellung, Untersuchung und Behebung der Folgen dieses Schadenfalls. Nach abgeschlossenem Verfahren über die Kostentragung hielt das kantonale Bau- und Justizdepartement in Dispositiv Ziffer 1 der Verfügung vom 12. Dezember 2017 diese Kostenhöhe fest. Es auferlegte diese Kosten in Dispositiv Ziffer 2 der Verfügung je zur Hälfte der A._ AG und der B._ AG. Gleich verfuhr es mit den Verfahrenskosten von insgesamt Fr. 1'600.-- (Dispositiv Ziffer 3). B. Die A._ AG focht die Verfügung beim Verwaltungsgericht des Kantons Solothurn an. Sie bestritt, Verhaltensverursacherin zu sein. Das Verwaltungsgericht wies die Beschwerde mit Urteil vom 16. August 2018 ab. C. Mit Eingabe vom 21. September 2018 erhebt die A._ AG Beschwerde in öffentlich-rechtlichen Angelegenheiten an das Bundesgericht und beantragt die Aufhebung des angefochtenen Urteils. Das Bau- und Justizdepartement ersucht um Abweisung der Beschwerde. Die Vorinstanz schliesst auf Abweisung der Beschwerde, soweit darauf einzutreten sei. Das Bundesamt für Umwelt (BAFU) äussert sich in der Vernehmlassung vom 17. September 2019 zur Angelegenheit. In der Folge halten die Beschwerdeführerin, das Bau- und Justizdepartement und die Vorinstanz an ihren Positionen fest.