Sachverhalt:
A.
Die Wohnbaugenossenschaft B._ reichte der Bau-, Werk- und Planungskommission der Einwohnergemeinde Dornach ein Baugesuch für den Abbruch von zwei Bauten und den Neubau von zwei Gebäuden (Haus A und Haus B) auf dem Grundstück GB Dornach Nr. 128 ein. Nach erfolgter Publikation erteilte die Bau-, Werk- und Planungskommission mit Verfügung vom 19. Januar 2017 die Baubewilligung und wies die erhobenen Einsprachen ab.
Auf Beschwerde von A._ hin hob das Bau- und Justizdepartement des Kantons Solothurn (BJD/SO) mit Verfügung vom 12. September 2017 die Baubewilligung wegen Überschreitung der zulässigen Gebäudehöhe auf.
Am 21. September 2017 erhob die Wohnbaugenossenschaft B._ dagegen Verwaltungsgerichtsbeschwerde an das Verwaltungsgericht des Kantons Solothurn. Dieses hiess die Beschwerde mit Urteil vom 11. Dezember 2018 gut, hob die Verfügung des BJD/SO vom 12. September 2017 auf und bestätigte die Baubewilligung der Bau-, Werk- und Planungskommission der Einwohnergemeinde Dornach vom 19. Januar 2017.
B.
Mit Eingabe vom 10. Januar 2019 führt A._ Beschwerde in öffentlich-rechtlichen Angelegenheiten an das Bundesgericht mit dem Antrag auf Aufhebung des angefochtenen Urteils.
Das Verwaltungsgericht und die Wohnbaugenossenschaft B._ (Beschwerdegegnerin) beantragen in ihren Vernehmlassungen, die Beschwerde sei abzuweisen, soweit darauf eingetreten werden könne. Das BJD/SO stellt Antrag auf Gutheissung der Beschwerde.
Der Beschwerdeführer und die Beschwerdegegnerin halten in weiteren Eingaben an ihrem Standpunkt und an ihren Anträgen fest.

Erwägungen:
1.
1.1. Dem angefochtenen Urteil der Vorinstanz liegt eine baurechtliche Streitigkeit und damit eine öffentlich-rechtliche Angelegenheit zugrunde. Das Bundesgerichtsgesetz enthält auf dem Gebiet des Raumplanungs- und Baurechts keinen Ausschlussgrund von der Beschwerde in öffentlich-rechtlichen Angelegenheiten (Art. 82 lit. a und Art. 83 BGG).
Der Beschwerdeführer hatte im kantonalen Verfahren Parteistellung. Als Nachbar im baurechtlichen Sinne ist er durch das angefochtene Urteil besonders berührt und hat ein schutzwürdiges Interesse an dessen Aufhebung. Er ist zur Beschwerdeführung berechtigt (<ref-law>).
1.2.
1.2.1. Mit der Beschwerde in öffentlich-rechtlichen Angelegenheiten kann geltend gemacht werden, der angefochtene Entscheid verletze Bundesrecht, Völkerrecht oder kantonale verfassungsmässige Rechte (Art. 95 lit. a, b und c BGG). Die Verletzung des übrigen kantonalen Rechts kann abgesehen von hier nicht relevanten Ausnahmen gemäss Art. 95 lit. c und d BGG vor Bundesgericht nicht gerügt werden; zulässig ist jedoch die Rüge, die Anwendung dieses Rechts führe zu einer Verletzung von Bundesrecht, namentlich des verfassungsmässigen Willkürverbots (<ref-ruling> E. 2 S. 149 f.).
Nach der ständigen Praxis des Bundesgerichts liegt Willkür vor, wenn der angefochtene Entscheid offensichtlich unhaltbar ist, mit der tatsächlichen Situation in klarem Widerspruch steht, eine Norm oder einen unumstrittenen Rechtsgrundsatz krass verletzt oder in stossender Weise dem Gerechtigkeitsgedanken zuwiderläuft. Das Bundesgericht hebt einen Entscheid jedoch nur auf, wenn nicht bloss die Begründung, sondern auch das Ergebnis unhaltbar ist. Dass eine andere Lösung ebenfalls als vertretbar oder gar zutreffender erscheint, genügt nicht (<ref-ruling> E. 2.4 S. 5).
1.2.2. Nach <ref-law> ist in der Beschwerdebegründung in gedrängter Form darzulegen, inwiefern der angefochtene Akt Recht verletzt. Die Verletzung von Grundrechten prüft das Bundesgericht nur insofern, als eine solche Rüge in der Beschwerde vorgebracht und begründet worden ist (<ref-law>; <ref-ruling> E. 1.6 S. 130).
Macht die beschwerdeführende Partei eine Verletzung des Willkürverbots von <ref-law> geltend, genügt es nicht, wenn sie einfach behauptet, der angefochtene Entscheid sei willkürlich. Sie hat vielmehr anhand der Erwägungen des angefochtenen Entscheids aufzuzeigen, inwiefern dieser an einem qualifizierten und offensichtlichen Mangel leidet. Auf Rügen, mit denen bloss allgemein gehaltene, appellatorische Kritik am angefochtenen Entscheid geübt wird, tritt das Bundesgericht nicht ein (<ref-ruling> E. 2.8 S. 494). Die Begründung muss gemäss der Rechtsprechung in der Beschwerdeschrift selber enthalten sein, weshalb blosse Verweise auf Ausführungen in anderen Rechtsschriften nicht ausreichen (<ref-ruling> E. 3.2 S. 399 f.; Urteil 1C_565/2014 vom 11. Mai 2015 E. 1.5).
1.3. Gemäss <ref-law> dürfen neue Tatsachen und Beweismittel nur so weit vorgebracht werden, als erst der Entscheid der Vorinstanz dazu Anlass gibt.
Auf die neuen Vorbringen des Beschwerdeführers, wie insbesondere auf jenes, wonach beim Gebäude A ein ganzes Vollgeschoss für die Nichtwohnnutzung verwendet werden müsse, die Nichtwohnung im Untergeschoss aber lediglich 63,30 m2 betrage, ist deshalb nicht einzutreten.
2.
2.1. Der Beschwerdeführer rügt eine Verletzung seines Anspruchs auf rechtliches Gehör gemäss <ref-law>. Er behauptet, die Vorinstanz habe auf Aktenstücke abgestellt, die er nicht habe sichten können. Damit werde sein Anspruch auf Akteneinsicht missachtet.
2.2. Der Beschwerdeführer substanziiert seine Behauptung nicht näher und es gibt keine Hinweise, dass die Vorinstanz ihren Entscheid auf Akten gestützt hat, in welche der Beschwerdeführer nicht hat Einsicht nehmen können.
Die Vorinstanz hat im vorinstanzlichen Verfahren den Parteien sämtliche Eingaben zugestellt und diese konnten sich hierzu äussern. In ihrer Entscheidbegründung verweist die Vorinstanz auf die Baupläne Nrn. 079-006, 079-008, 079-009 und 079-010, welche sich unbestrittenermassen in den Akten befinden. Eine Verletzung von <ref-law> ist nicht zu erkennen.
3.
3.1. Der Beschwerdeführer bringt vor, die Vorinstanz habe die Gebäudehöhe bei den beiden projektierten Gebäuden falsch berechnet. Die geplanten Gebäudehöhen betrügen 11,50 m für Haus A (statt der zulässigen 10,50 m) und fast 9,00 m für Haus B (statt der zulässigen 7,50 m). Dies habe er in seiner Einsprache an die Bau-, Werk- und Planungskommission und in seiner Beschwerde an das BJD/SO dargelegt. Die Vorinstanz habe übersehen, dass die Gebäudehöhe an der Hauptfassade gemessen werde, wobei Dachaufbauten, die sich auf der Fassadenflucht befänden, zur Gebäudehöhe hinzuzurechnen seien. Zudem überschritten die geplanten Nutzungsflächen die maximal zulässige Nutzung der Grundstücke.
3.2. Die Vorinstanz hat zusammenfassend erwogen, strittig sei insbesondere die Gebäudehöhe bzw. deren Berechnungsart. Wie aus den Grundrissen hervorgehe, wiesen die Gebäude nicht acht, sondern vier Fassaden auf, wobei die Fassade auf der Südseite beidseitig leicht abgewinkelt sei. Gemäss Plan 079-009 betrage die Gebäudehöhe an den massgebenden Fassaden-Aussenseiten (Flucht) beim Haus A 9,40 m und beim Haus B 7,50 m. Die zulässigen Maximalhöhen seien daher eingehalten.
Für die Berechnung der Bruttogeschossfläche bei Untergeschossen und folglich auch der Ausnützungsziffer sei nach massgebendem kantonalen Recht auf die Oberkante der rohen Betondecke abzustellen. Die Berechnung durch die örtliche Baubehörde sei somit nicht zu beanstanden und die maximal erlaubte Ausnutzung werde nicht überschritten.
3.3. Im vorinstanzlichen Verfahren war umstritten, wie die Gebäudehöhe bei leicht abgewinkelten Fassaden zu messen ist. Die Vorinstanz hat im angefochtenen Urteil unter Bezugnahme auf das kantonale Recht nachvollziehbar begründet, weshalb von vier (und nicht von acht) Fassaden und damit auch von vier Messpunkten auszugehen ist, wobei die zulässige Gebäudehöhe an diesen vier Punkten eingehalten ist.
Der Beschwerdeführer setzt sich in seiner Beschwerde nicht mit der Begründung der Vorinstanz auseinander. Vielmehr stellt er seine eigene Sichtweise dar und verfällt damit weitestgehend in blosse appellatorische Kritik am angefochtenen Urteil. Soweit er in seiner Beschwerdeschrift auf frühere Eingaben an die örtliche Baubehörde und an das BJD/SO verweist, ohne die dort vorgebrachten Rügen zu wiederholen, ist darauf nicht einzugehen (vgl. E. 1.2.2 hiervor). Eine willkürliche Anwendung kantonalen Rechts bei der Berechnung der Gebäudehöhen seitens der Vorinstanz ist aufgrund der Vorbringen des Beschwerdeführers nicht ersichtlich.
Ebenso wenig vermag der Beschwerdeführer mit seinen Ausführungen die Nutzungsberechnung der Vorinstanz substanziiert in Frage zu stellen und insoweit eine willkürliche Anwendung kantonalen Rechts aufzuzeigen.
4.
Das angefochtene Urteil ist offensichtlich von Oberrichter Stöckli, welcher Teil des Spruchkörpers gebildet hat, in Vertretung (i.V.) der Präsidentin des Verwaltungsgerichts unterzeichnet worden. Weshalb diese gerichtsübliche Praxis zur Ungültigkeit des Urteils führen sollte, wie der Beschwerdeführer in seiner Beschwerde anführt, ist nicht einsichtig.
5.
Die Beschwerde ist abzuweisen, soweit darauf einzutreten ist. Bei diesem Verfahrensausgang hat der Beschwerdeführer die Gerichtskosten zu tragen (<ref-law>) und der anwaltlich vertretenen Beschwerdegegnerin eine angemessene Entschädigung zu bezahlen (Art. 68 Abs. 1 und 2 BGG). Die kommunalen Behörden haben keinen Anspruch auf Ausrichtung einer Parteientschädigung (<ref-law>).

Demnach erkennt das Bundesgericht:
1.
Die Beschwerde wird abgewiesen, soweit darauf einzutreten ist.
2.
Die Gerichtskosten von Fr. 2'000.-- werden dem Beschwerdeführer auferlegt.
3.
Der Beschwerdeführer hat der Beschwerdegegnerin für das bundesgerichtliche Verfahren eine Entschädigung von Fr. 2'000.-- zu bezahlen.
4.
Dieses Urteil wird den Parteien, der Bau-, Werk- und Planungskommission der Einwohnergemeinde Dornach, dem Bau- und Justizdepartement des Kantons Solothurn und dem Verwaltungsgericht des Kantons Solothurn schriftlich mitgeteilt.
Lausanne, 19. Juni 2019
Im Namen der I. öffentlich-rechtlichen Abteilung
des Schweizerischen Bundesgerichts
Der Präsident: Chaix
Der Gerichtsschreiber: Stohner