Faits : A. X._, né en 1974, est ressortissant d'Allemagne, pays où il a vécu dès l'âge de 16 ans. Arrivé en Suisse le 15 mars 2010, il a été mis au bénéfice d'une autorisation de séjour UE/AELE avec activité lucrative, valable initialement jusqu'au 30 juin 2015, puis renouvelée jusqu'au 30 juin 2020. Père de deux enfants (nés en 1995 et 2004) vivant en Allemagne (art. 105 al. 2 LTF), X._ a rencontré en Suisse, vers la fin de l'année 2010, Y._, ressortissante suisse, elle-même déjà mère d'un enfant né en 2004, qui habite avec elle. Le couple, qui n'est pas marié, a eu un fils, né en 2014, que X._ a reconnu. Sur le plan professionnel et financier, X._ a travaillé comme employé salarié dans le domaine du bâtiment jusqu'en 2012. A partir de 2013, il a bénéficié de prestations du revenu d'insertion (RI). Ses dettes s'élèvent à environ 15'000 fr. B. Le 30 septembre 2015, le Tribunal correctionnel de l'Est vaudois a condamné X._ à une peine privative de liberté de 36 mois, dont 18 mois avec sursis, délai d'épreuve de 5 ans subordonné à un traitement psychothérapeutique ambulatoire, pour crime, délit et contravention à la loi fédérale du 3 octobre 1951 sur les stupéfiants et les substances psychotropes (LStup; RS 812.121). En substance, il est reproché à X._, lui-même consommateur de cocaïne, d'avoir, entre avril 2013 ( recte : début 2011) et mars 2014, vendu environ 1'151.8 grammes de cette substance, correspondant à 733 grammes de drogue pure, ou servi d'intermédiaire entre des fournisseurs et d'autres clients, pour un chiffre d'affaires de 112'600 fr. au minimum (rapport final de la police du 24 juin 2014). Au moment du jugement, X._ a été libéré compte tenu de la détention, provisoire (dès le 16 avril 2014) et au titre d'exécution anticipée de peine, subie avant jugement. Depuis le mois de décembre 2015, X._, retourné vivre auprès de Y._, du fils de celle-ci et de leur enfant commun, travaille comme salarié. C. Par décision du 29 février 2016, le Service de la population du canton de Vaud (ci-après: le Service cantonal) a révoqué l'autorisation de séjour UE/AELE de X._ et prononcé son renvoi de Suisse en raison des actes délictueux et criminels commis. La Cour de droit administratif et public du Tribunal cantonal du canton de Vaud (ci-après: le Tribunal cantonal) a rejeté, dans un arrêt du 8 juin 2016, le recours de X._ contre cette décision et confirmé celle-ci. D. Par acte du 16 juin 2016, X._ forme un recours en matière de droit public auprès du Tribunal fédéral contre l'arrêt du 8 juin 2016. Il conclut, sous suite de frais et dépens, principalement à l'annulation de l'arrêt entrepris, subsidiairement à la réforme de l'arrêt en ce sens que l'autorisation de séjour UE/AELE en sa faveur n'est pas révoquée et son renvoi de Suisse n'est pas ordonné. Le Service cantonal et le Tribunal cantonal renoncent à se déterminer, le second se référant aux considérants de son arrêt. Le Secrétariat d'Etat aux migrations n'a pas déposé d'observations sur le recours dans le délai imparti à cet effet. Par ordonnance du 20 juin 2016, le Président de la IIe Cour de droit public du Tribunal fédéral a admis la demande d'effet suspensif contenue dans le recours.