Faits : A. A._ (ci-après: la société), de siège à Genève, est inscrite au registre du commerce depuis le 6 juillet 2005. Depuis sa création et jusqu'au 22 avril 2016, la société était inscrite sous la raison sociale "B._ SA". La première année de son existence, la société a eu pour but le "commerce de produits et de services notamment dans le domaine de la santé, du bien-être et de la beauté". De juin 2006 à avril 2016, elle a eu pour but les "activités de conseils et services dans le domaine du marketing direct, soit en particulier toutes activités de recherches de clients par la diffusion de prospectus, mailing et de courriers publicitaires, ainsi que toutes activités de promotion adressées à un public non ciblé". Depuis le 22 avril 2016, la société a pour but les "activités de conseils et de services dans les domaines du marketing direct, du marketing relationnel, du CRM (Customer-Relationship-Management), du marketing promotionnel et des programmes de fidélité". Par convention du 24 août 2015, C._, alors directeur de la société, a vendu à D._ la totalité du capital-actions de celle-ci pour le prix de 20'000 fr. Le vendeur a aussi cédé sa créance de 40'209 fr. 62 envers la société, ainsi que, dans leur intégralité, les marques commerciales et le fichier clients, et s'est engagé à ne plus les contacter, ni à entreprendre une activité qui pourrait faire directement concurrence à la société. Depuis octobre 2015, E._ est directeur de la société. Dans ses déclarations fiscales 2015 et 2016, la société a indiqué lui avoir versé la somme de 24'000 fr., respectivement 98'975 fr. à titre de salaire brut. B. Dans les comptes annexés à sa déclaration fiscale 2015, la société a fait état d'un bénéfice de l'exercice de 18'781 fr. 19 et de pertes reportées à hauteur de 148'480 fr. 12 (solde de - 129'698 fr. 13). Par décisions du 2 février 2017, confirmées sur réclamation le 30 mars 2017, l'Administration fiscale cantonale de la République et canton de Genève (ci-après: l'Administration fiscale cantonale) a taxé la société pour 2015, tant en matière d'impôt fédéral direct (ci-après: IFD) que d'impôts cantonaux et communaux (ci-après: ICC), en scindant l'année en deux périodes. Pour la première période, allant du 1 er janvier au 23 août 2015, l'Administration fiscale cantonale a tenu compte d'un bénéfice imposable nul et des pertes reportées des sept exercices précédents. Pour le reste de l'année, l'Administration fiscale cantonale a taxé la société sur un bénéfice imposable de 18'781 fr., sans déduction des pertes reportées. Contre les décisions du 30 mars 2017, la société a formé un recours auprès du Tribunal administratif de première instance de la République et canton de Genève (ci-après: le Tribunal administratif de première instance). Par jugement du 28 mai 2018, celui-ci a admis le recours et annulé les décisions sur réclamation contestées. Par arrêt du 25 juin 2019, la Cour de justice de la République et canton de Genève (ci-après: la Cour de justice) a admis le recours formé par l'Administration fiscale cantonale contre le jugement du 28 mai 2018, a annulé celui-ci et rétabli les décisions sur réclamation du 30 mars 2017. Selon elle, on se trouvait en présence de la vente d'un manteau d'actions. Le report de pertes des exercices précédents était partant exclu après cette vente. C. Contre l'arrêt du 25 juin 2019 de la Cour de justice, A._ forme un recours en matière de droit public au Tribunal fédéral. Elle conclut, sous suite de frais et dépens, principalement à l'annulation de l'arrêt querellé et à sa réforme en ce sens que la cession des actions du 23 août 2015 ne doit pas être qualifiée fiscalement de vente d'un manteau d'actions. Subsidiairement, elle conclut à l'annulation de l'arrêt entrepris et au renvoi de la cause à l'instance précédente pour nouvelle décision, afin de respecter le droit d'être entendu. La Cour de justice, qui n'a pas d'observations à formuler, s'en rapporte à justice quant à la recevabilité du recours et persiste dans les considérants et le dispositif de son arrêt. L'Administration fiscale cantonale conclut au rejet du recours, sous suite de frais. L'Administration fédérale des contributions conclut au rejet du recours, sous suite de frais, en se ralliant au dispositif et aux considérants de l'arrêt du 25 juin 2019. A._ a répliqué, en persistant dans ses conclusions.