Есть несколько ошибок в коде стиля
1) не используйте лишние бордеры создавая ненужные ветви дерева
<!--Back border-->
<Border x:Name="BackBorder"
Background="LightGray">
</Border>
у вас выше уже был бордер чтобы сделать и рамку и фон, зачем лишние?
2) Вы забыли самый важный элемент стиля окна - AdornerDecorator.
Кажется что он ни на что не влияет, но на самом деле именно из-за него и происходят все глюки в него нужно обернуть ContentPresenter (а точнее весь пользовательский контент)
Скорее всего мерцания именно из-за этого
Вообще, если с контролом непонятные визуальные глюки, всегда советую обращаться к документации по стандартным стилям, скорее всего вы забыли какую-то важную часть кода (чаще всего какой-нибудь "PART_")
https://docs.microsoft.com/ru-ru/dotnet/framework/...
3) используйте привязки к свойствам окна (беграунд, бордер, толщина бордера) внутри темплейта
4) ну и у вас как-то странно стиль применен x:Type local:MainWindow, вместо x:Type Window
Вот пример темплейта стиля:
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Window}">
<Border x:Name="RootContainer" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
<AdornerDecorator>
<DockPanel>
<Border DockPanel.Dock="Top" Background="{StaticResource WindowHeaderBackgroundBrush}">
<!--тут ваши стили заголовка и его элементов-->
</Border>
<ContentPresenter/>
</DockPanel>
</AdornerDecorator>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="WindowState" Value="Maximized">
<Setter TargetName="RootContainer" Property="Padding" Value="7"/>
</Trigger>
<Trigger Property="IsActive" Value="False">
<Setter TargetName="RootContainer" Property="BorderBrush" Value="#FF333333"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
Если мерцания после правок не пропадут на 7ке, значит необходимо таки добавить рамку WindowChrome (стандартная тень от окна и базовый бордер) для этой ОС,
хотя бы вот так GlassFrameThickness="0,1,0,0"
Либо отказаться от WindowChrome полностью (но тогда нужен какой-то кастомный контрол окна, поддерживающий все фишки Aero (например drag за заголовок и стук о край экрана), у меня раньше такой использовался, но с приходом WindowChrome свойств он стал не нужен.
Вообще отказываться от WindowChrome тени окна я бы не рекомендовал, уж слишком лучше выглядят с ней окошки, а любое кастомное решение будет проигрывать стандартной Aero тени в производительности и неглючности.