Use this link if you want to stretch your Screensaver Across all screens. Basically stretching your primary window across the Virtural Screen. The Project was to build a Screensaver based on a set of Silverlight animations. A couple of links that made this possible: Even though this is from 2006 the fundamentals still hold true. Another example with Step by Step explanations. Summary: I built an animation in MS Blend 4.  I made sure to target .NET 3.5 as my client did not have .NET 4.  In the MainWindow.XAML <Window tag I add a WindowStyle property of None.  This basically clears the Title bar and buttons. I then added to add dependency references to both System.Windows.Form.dll and System.Drawing.dll - The example above uses these to get the multiple screens, their size and their position.  My Screensaver only plays on the primary screen and covers all others with a flat color. The idea is to set the primary window to Topmost and Maximize it,  add a mouse movement handler to close the window when the mouse moves, hide the mouse cursor and place additional app windows on the additional screens. In the link above, they have this in the App.xaml.cs but I added mine to the MainWindow.xaml.cs : Topmost = true; MouseMove += new System.Windows.Input.MouseEventHandler(PhotoStack_MouseMove); MouseDown += new MouseButtonEventHandler(PhotoStack_MouseDown); KeyDown += new System.Windows.Input.KeyEventHandler(PhotoStack_KeyDown); Mouse.OverrideCursor = System.Windows.Input.Cursors.None; System.Drawing.Rectangle location = System.Windows.Forms.Screen.PrimaryScreen.Bounds; foreach (System.Windows.Forms.Screen screen in System.Windows.Forms.Screen.AllScreens) { if (screen == System.Windows.Forms.Screen.PrimaryScreen) continue; Window window = new Window(); window.WindowStartupLocation = WindowStartupLocation.Manual; location = screen.Bounds; //covers entire monitor window.Left = location.X - 7; window.Top = location.Y - 7; window.Width = location.Width + 14; window.Height = location.Height + 14; } //show non-primary screen windows foreach (Window window in System.Windows.Application.Current.Windows) { window.WindowStyle = WindowStyle.None; window.Show(); } ///shows primary screen window last this.WindowState = WindowState.Maximized; } void PhotoStack_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) { System.Windows.Application.Current.Shutdown(); } void PhotoStack_MouseDown(object sender, MouseButtonEventArgs e) { System.Windows.Application.Current.Shutdown(); } void PhotoStack_MouseMove(object sender,System.Windows.Input.MouseEventArgs e) { System.Windows.Point currentPosition = e.MouseDevice.GetPosition(this); // Set IsActive and MouseLocation only the first time this event is called. if (!isActive) { mousePosition = currentPosition; isActive = true; } else { // If the mouse has moved significantly since first call, close. if ((Math.Abs(mousePosition.X - currentPosition.X) > 10) || (Math.Abs(mousePosition.Y - currentPosition.Y) > 10)) { System.Windows.Application.Current.Shutdown(); } } } bool isActive; System.Windows.Point mousePosition; Note this is a stripped down version of the above link. The trick is to create a new window on the other screens and stretch them to fix without using the maximize.  But the primary window needs to be maximized and Topmost so it covers the start bar. Once this is built, change the .exe to .scr   Right click and choose install. Be sure to look into the Preview, Settings, Start options in the link above.