Silene dioica (L.) Clairv. (Caryophyllaceae) is an insect pollinated and obligately cross-fertilising herb commonly found on serpentine, i.e. soils rich in heavy metals, and on cultivated meadows. Groups of Silene populations were studied in two areas in the Scandianvian mountains. In a northern area Silene populations grow in an open pine and birch forest while in the south, populations are surrounded by a continuous and dense spruce forest. Gene flow, estimated on the basis of allele frequencies, is highly restricted in the south in comparison to the north. This has led to an extensive genetic differentiation among populations. The pollinator guilds (Thricops flies, syrphid flies and bumblebees) are similar in the northern and southern populations and can therefore not account for the difference in gene flow. The flowering in nearby populations overlaps broadly and is also not the reason for the genetic differentiation in the south. The differentiation is more likely due to vegetation that limits pollinator movement. The level of gene flow differs in the two habitats both in the north and in the south. The gene flow is restricted among serpentine populations but common among meadow populations. Pollen dispersal, and in particular, anthropogenic seed dispersal mediate gene flow among meadows. Serpentine populations are unaffeced by human activity. Pollinators are therefore the main agent of gene flow on serpentine. This study shows the importance of the surrounding vegetation in influencing gene flow patterns among populations as well as that habitat fragmentation affects the genetic properties of plant populations. In addition, we have also observed a restricted gene flow within populations. Enzyme allele frequencies show an excess of homozygotes within most of the populations. This can be explained through limited pollen dispersal and differences in male and female flowering density.