Die junge Stockholmer Malerin Lilian Sjöberg (Inez Bjørg David) erhält auf eine Empfehlung des Journalisten Albin Persson (Ben Zimmermann) ein Kunststipendium, mit dem sie einen Sommer lang im idyllischen Charlottenberg malen kann. Zwischen ihr und dem dortigen Förster Felix Blom (Mirko Lang) entsteht eine zarte Liebe. Als Lilian das erste Mal auf den Vorsitzenden des Charlottenberger Kunstvereins, Martin Blom (Helmut Zierl), trifft, reagiert dieser unerwartet zurückhaltend. Auch Alma (Annekathrin Bürger), Mutter von Martin und Großmutter von Felix, begegnet ihr mit unverhohlener Abscheu.
Lilian plagen oft Albträume, ihre Gemälde werden immer düsterer. Eines Tages gelangt sie auf einem Spaziergang mit Felix zu einem wunderschönen See. Sie erkennt ihn aus ihren Träumen wieder, obwohl sie vorher noch nie in Charlottenberg war. Alma beobachtet die Liaison zwischen Felix und Lilian mit größter Sorge. Denn am See taucht ein schwarzer Schwan auf – für sie ein Vorbote größten Unheils. Die Situation um Lilian spitzt sich weiter zu, als der Journalist Albin anfängt, die Familiengeschichte der Bloms zu recherchieren. Lilian ahnt nicht, dass hinter den Reaktionen der Menschen in Charlottenberg ein dunkles Geheimnis steckt, das sie unmittelbar betrifft.