Sachverhalt:
A.
A._, geboren 1971, gelernter Zimmermann, führte einen eigenen Holzbaubetrieb mit mehreren Angestellten. Nachdem er im Juli 2000 am rechten Auge praktisch erblindet war, meldete er sich im September 2000 bei der Invalidenversicherung zum Leistungsbezug an. Die IV-Stelle des Kantons St. Gallen sprach ihm mit Verfügung vom 7. August 2003 ab dem 1. Juli 2001 eine ganze Invalidenrente zu. Der Anspruch wurde am 6. Mai 2005 und am 17. Juni 2009 bestätigt.
Im August 2013 wurde die Diagnose einer Multiplen Sklerose (MS) gestellt. Die IV-Stelle holte im Zuge eines von Amtes wegen eingeleiteten Revisionsverfahrens ein Gutachten der Medizinischen Abklärungsstelle MEDAS Bern vom 13. Oktober 2015 ein. Mit Verfügung vom 31. Mai 2016 hob sie den Rentenanspruch auf mit der Begründung, dass A._ seit August 2013 wieder zu 70-80 % arbeitsfähig sei.
B.
Die dagegen erhobene Beschwerde wies das Versicherungsgericht des Kantons St. Gallen mit Entscheid vom 15. Februar 2019 ab.
C.
A._ lässt Beschwerde in öffentlich-rechtlichen Angelegenheiten führen mit dem Antrag, es sei ihm eine ganze Invalidenrente zuzusprechen, eventualiter sei die Sache zu neuer Entscheidung an die Vorinstanz zurückzuweisen.
Die IV-Stelle und das Bundesamt für Sozialversicherungen verzichten auf eine Vernehmlassung.
Erwägungen:
1.
Die Beschwerde in öffentlich-rechtlichen Angelegenheiten kann wegen Rechtsverletzungen gemäss Art. 95 und 96 BGG erhoben werden. Das Bundesgericht wendet das Recht von Amtes wegen an (Art. 106 Abs. 1 BGG). Es ist folglich weder an die in der Beschwerde geltend gemachten Argumente noch an die Erwägungen der Vorinstanz gebunden; es kann eine Beschwerde aus einem anderen als dem angerufenen Grund gutheissen und es kann sie mit einer von der Argumentation der Vorinstanz abweichenden Begründung abweisen. Immerhin prüft das Bundesgericht, unter Berücksichtigung der allgemeinen Pflicht zur Begründung der Beschwerde (Art. 42 Abs. 1 und 2 BGG), grundsätzlich nur die geltend gemachten Rügen, sofern die rechtlichen Mängel nicht geradezu offensichtlich sind (BGE 141 V 234 E. 1 S. 236 mit Hinweisen).
2.
Streitig ist, ob die vorinstanzlich bestätigte Aufhebung der ganzen Rente auf Ende des der Zustellung der Verfügung vom 31. Mai 2016 folgenden Monats beziehungsweise die Verneinung des Rentenanspruchs ab dem 1. August 2017 vor Bundesgericht standhält. Zur Frage stehen dabei im Rahmen der an sich unbestrittenerweise zulässigen Revision (nach Verbesserung des Sehvermögens und unter Annahme einer 75%igen Arbeitsfähigkeit) einzig die erwerblichen Auswirkungen der Gesundheitsschädigung.
3.
3.1. Das kantonale Gericht hat die zu beachtenden Grundsätze zur Ermittlung des Invaliditätsgrades nach der allgemeinen Methode des Einkommensvergleichs (Art. 16 ATSG) zutreffend dargelegt. Es wird darauf verwiesen.
3.2. Hervorzuheben ist, dass der Einkommensvergleich in der Regel in der Weise zu erfolgen hat, dass die beiden hypothetischen Erwerbseinkommen ziffernmässig möglichst genau ermittelt und einander gegenübergestellt werden, worauf sich aus der Einkommensdifferenz der Invaliditätsgrad bestimmen lässt. Insoweit die fraglichen Erwerbseinkommen ziffernmässig nicht genau ermittelt werden können, sind sie nach Massgabe der im Einzelfall bekannten Umstände zu schätzen und die so gewonnenen Annäherungswerte miteinander zu vergleichen. Lassen sich die beiden hypothetischen Erwerbseinkommen nicht zuverlässig ermitteln oder schätzen, so ist in Anlehnung an die spezifische Methode für Nichterwerbstätige (Art. 28a Abs. 2 IVG)ein Betätigungsvergleich anzustellen und der Invaliditätsgrad nach Massgabe der erwerblichen Auswirkungen der verminderten Leistungsfähigkeit in der konkreten erwerblichen Situation zu bestimmen (ausserordentliches Bemessungsverfahren). Der grundsätzliche Unterschied dieses Verfahrens zur spezifischen Methode besteht darin, dass die Invalidität nicht unmittelbar nach Massgabe des Betätigungsvergleichs als solchem bemessen wird. Vielmehr ist zunächst anhand des Betätigungsvergleichs die leidensbedingte Behinderung festzustellen; sodann aber ist diese im Hinblick auf ihre erwerbliche Auswirkung besonders zu gewichten. Eine bestimmte Einschränkung im funktionellen Leistungsvermögen einer erwerbstätigen Person kann zwar, braucht aber nicht notwendigerweise eine Erwerbseinbusse gleichen Umfangs zur Folge zu haben. Wollte man bei Erwerbstätigen ausschliesslich auf das Ergebnis des Betätigungsvergleichs abstellen, so wäre der gesetzliche Grundsatz verletzt, wonach bei dieser Kategorie von Versicherten die Invalidität nach Massgabe der Erwerbsunfähigkeit zu bestimmen ist (BGE 128 V 29 E. 1 S. 30 f.; 104 V 135 E. 2 S. 136 f.; AHI 1998 S. 119 E. 1a S. 120; Urteil 8C_626/2014 vom 6. Januar 2015 E. 4.2; vgl. ferner 8C_645/2010 vom 22. November 2010 E. 7.1 und 7.2). Praxisgemäss kann diese Bemessungsmethode des Betätigungsvergleichs bei Selbstständigerwerbenden Anwendung finden (BGE 128 V 29 E. 1 S. 30 f.; 105 V 151; 104 V 135 E. 2c S. 138 f.; SVR 2010 IV Nr. 11 S. 35, 9C_236/2009 E. 3.3; AHI 1998 S. 119 E. 1a; Urteile 8C_640/2016 vom 29. November 2016 E. 4.2; 8C_514/2016 vom 29. September 2016 E. 6.1; 9C_812/2015 vom 7. Juli 2016 E. 4; 8C_928/2015 vom 19. April 2016 E. 2.3.3).
3.3. Zu ergänzen ist, dass der Invaliditätsgrad nach Eintritt einer anspruchsrelevanten Veränderung des Sachverhalts im Sinne einer revisionsbegründenden erheblichen Gesundheitsveränderung auf der Grundlage eines richtig und vollständig festgestellten Sachverhalts neu und ohne Bindung an frühere Invaliditätsschätzungen zu ermitteln ist (BGE 141 V 9 E. 2.3 S. 11).
3.4. Die Frage nach der im Einzelfall anwendbaren Methode der Invaliditätsbemessung (Einkommensvergleich mit den Untervarianten Schätzungs- und Prozentvergleich sowie ausserordentliches Bemessungsverfahren, Betätigungsvergleich, gemischte Methode) ist eine Rechtsfrage und somit vom Bundesgericht frei überprüfbar (Urteile 8C_753/2018 vom 4. Februar 2019 E. 5.2; I 726/06 vom 8. Januar 2007 E. 3.2).
4.
Die Vorinstanz ermittelte das Valideneinkommen gestützt auf die vom Bundesamt für Statistik herausgegebene Lohnstrukturerhebung (LSE). Zur Begründung führte sie an, dass die Verwaltung bei der ursprünglichen Rentenzusprechung ebenfalls auf die Tabellenlöhne abgestellt habe. Es sei in erwerblicher Hinsicht diesbezüglich keine Sachverhaltsänderung eingetreten. Sie ermittelte für das Jahr 2016 ausgehend vom Durchschnitt der jeweiligen Werte für Kompetenzniveau 3 beziehungsweise 4 im Baugewerbe (entsprechend den in LSE 2002 noch zusammengefassten Anforderungsniveaus 1 und 2) ein Jahreseinkommen von 100'937 Franken.
Bezüglich des Invalideneinkommens stellte das kantonale Gericht fest, dass dem Beschwerdeführer gemäss Gutachten Tätigkeiten zumutbar sind, die das Gleichgewicht und die Standstabilität nicht übermässig beanspruchen und insbesondere kein Besteigen von Leitern und Gerüsten erfordern. Vorbehalte bestehen auch für Tätigkeiten, bei denen eine hohe Handkraft und Geschicklichkeit benötigt wird. Arbeiten in Hitze und Wärme sind zu meiden beziehungsweise verlangen vermehrte Pausen. Psychomentale Belastungen sind eher ungeeignet. Die Tätigkeit als Inhaber einer Unternehmung für Zimmermannsarbeiten beziehungsweise Innenausbau mit zeitlicher Flexibilität und Delegationsmöglichkeiten gilt gemäss vorinstanzlicher Feststellung als ideal adaptiert. Der Versicherte - so das kantonale Gericht weiter - verfüge als gelernter Zimmermann nicht nur über handwerkliche Fähigkeiten. Vielmehr habe er als seit 1991 Selbstständigerwerbender und Geschäftsführer auch Erfahrung bei der Kundenbetreuung, der Kundenakquisition sowie bezüglich allgemeiner Beratungsdienstleistungen erlangt und zudem verschiedene Weiterbildungen absolviert. Zugunsten des Beschwerdeführers bestimmte das kantonale Gericht das Invalideneinkommen jedoch gestützt auf die LSE. Es sei dem bei Verfügungserlass 45-Jährigen zuzumuten, eine andere als die bisherige Tätigkeit auszuüben, und der Lohn als Angestellter falle geringer aus. Dabei ging es vom Totalwert für Männerlöhne gemäss Tabelle TA1, Kompetenzniveau 3, aus. Entsprechend dem zeitlich noch zumutbaren Arbeitspensum von 75 % ermittelte es ein Invalideneinkommen von 67'394 Franken.
Die Vorinstanz gewährte einen leidensbedingten Abzug von 5 %. Der Vergleich des dadurch reduzierten Invalideneinkommens von 64'024 Franken mit dem Valideneinkommen von 100'937 Franken ergab einen rentenausschliessenden Invaliditätsgrad von 37 %.
5.
Der Beschwerdeführer macht geltend, dass das Valideneinkommen nicht anhand statistischer Werte hätte ermittelt werden dürfen. Vielmehr wäre ein Betätigungsvergleich durchzuführen gewesen. Sollte dennoch auf die LSE abgestellt werden, müsse zumindest der statistische Wert für Kompetenzniveau 4 zur Anwendung gebracht werden. Es sei zudem zu berücksichtigen, dass er als Gesunder weit mehr als die betriebsübliche wöchentliche Arbeitszeit von 41,7 Stunden geleistet habe. Beim Invalideneinkommen wäre nicht auf die Zahlen gemäss Kompetenzniveau 3, sondern auf Kompetenzniveau 2 abzustellen. Schliesslich wäre der leidensbedingte Abzug auf 10 % festzusetzen.
6.
Der Invaliditätsgrad ist für den Zeitpunkt der Revisionsverfügung neu zu prüfen (oben E. 3.3). Damit ist auch das Valideneinkommen auf diesen Zeitpunkt hin so zuverlässig wie möglich festzusetzen. Die von der Vorinstanz angewendete Einkommensvergleichsmethode soll zwar praxisgemäss in erster Linie zum Zug kommen (oben E. 3.2), doch sind davon unter den hier gegebenen Umständen keine zuverlässigen Ergebnisse zu erwarten. Der Versicherte führte bei Eintritt der Gesundheitsschädigung im Jahr 2000 einen eigenen Betrieb (in Form einer Aktiengesellschaft), den er im Alter von erst 20 Jahren übernommen hatte. Er bezog nur einen geringen Lohn und die Betriebsgewinne waren bis dahin äusserst schwankend gewesen. Zu seinen Gunsten (weil deutlich höher) zog die IV-Stelle den in der LSE ausgewiesenen Lohn für die damals noch zusammengefassten Anforderungsniveaus 1 und 2 (heute Kompetenzniveau 4 beziehungsweise 3) im Baugewerbe heran.
Die damalige hilfsweise Festsetzung gestützt auf die Tabellenlöhne kann nicht als zuverlässige Referenz dafür gelten, was der Beschwerdeführer heute als Gesunder verdienen könnte. Auch mit Blick auf die Geschäftsentwicklung rechtfertigt es sich nicht, den statistischen Durchschnittslohn für einen - wenn auch gut qualifizierten - Arbeitnehmer heranzuziehen. Zwischenzeitlich vermochte der Beschwerdeführer seinen Betrieb trotz erheblicher invaliditätsbedingter Einschränkungen personell deutlich zu vergrössern und räumlich zu erweitern.
Das Valideneinkommen lässt sich nach dem Gesagten entgegen der vorinstanzlichen Annahme weder ziffernmässig ermitteln noch im Sinne eines Annäherungswertes schätzen. Mangels eines zuverlässigen Ergebnisses sind daher die bundesrechtlichen Voraussetzungen für die Anwendung der Einkommensvergleichsmethode (oben E. 3.2) nicht erfüllt. Die Sache ist daher an die IV-Stelle zurückzuweisen, damit sie den Invaliditätsgrad nach der ausserordentlichen Bemessungsmethode ermittle.
7.
Das Verfahren ist kostenpflichtig (Art. 65 BGG). Die Gerichtskosten werden der unterliegenden Beschwerdegegnerin auferlegt (Art. 66 Abs. 1 BGG). Des Weiteren hat sie dem Beschwerdeführer eine Parteientschädigung zu bezahlen (Art. 68 Abs. 2 BGG).
Demnach erkennt das Bundesgericht:
1.
Die Beschwerde wird teilweise gutgeheissen. Der Entscheid des Versicherungsgerichts des Kantons St. Gallen vom 15. Februar 2019 und die Verfügung der IV-Stelle des Kantons St. Gallen vom 31. Mai 2016 werden aufgehoben. Die Sache wird an die IV-Stelle des Kantons St. Gallen zurückgewiesen, damit sie über den Anspruch des Beschwerdeführers auf eine Invalidenrente neu verfüge. Im Übrigen wird die Beschwerde abgewiesen.
2.
Die Gerichtskosten von Fr. 800.- werden der Beschwerdegegnerin auferlegt.
3.
Die Beschwerdegegnerin hat den Beschwerdeführer für das bundesgerichtliche Verfahren mit Fr. 2800.- zu entschädigen.
4.
Die Sache wird zur Neuverlegung der Kosten und der Parteientschädigung des vorangegangenen Verfahrens an das Versicherungsgericht des Kantons St. Gallen zurückgewiesen.
5.
Dieses Urteil wird den Parteien, dem Versicherungsgericht des Kantons St. Gallen und dem Bundesamt für Sozialversicherungen schriftlich mitgeteilt.
Luzern, 26. November 2019
Im Namen der I. sozialrechtlichen Abteilung
des Schweizerischen Bundesgerichts
Der Präsident: Maillard
Die Gerichtsschreiberin: Durizzo