Fix a signage player that never appears on the second display

5 min read · Published November 6, 2026

Your 3840 is a count of physical pixels and the player places its window in logical pixels. With the 4K primary at 150 percent the whole desktop measures 3840 logical pixels wide, so a window at left 3840 begins past its right edge. Set the scale to 100 percent on both displays, or divide every coordinate by 1.5.

You built the window position the obvious way. The 4K panel on the left is 3840 pixels wide, so the second display begins at 3840, and the profile says left 3840, top 0, size 1920 x 1080. The player starts and the second screen stays empty. The same method worked when both panels ran 1080p. What changed is the scale factor, and this page gives you the arithmetic and the two fixes.

Windows keeps two coordinate grids, and a player that places its window on the scaled grid reads your 3840 as a point past the right edge of the whole desktop, so the window renders nowhere. Turn scaling off on both displays and it appears. Keep 150 percent and you divide every coordinate by 1.5.

Why the window lands outside the desktop

The physical grid is the panel's native resolution, the figure printed on digital signage display spec sheets: 3840 x 2160 on the TV, 1920 x 1080 on the second panel. Windows lays the panels side by side on one virtual desktop measured in that grid.

Scaling adds a second grid. At 150 percent, one logical pixel spans 1.5 physical pixels, and a display's logical width is its physical width divided by its scale factor. Microsoft documents the logical grid for its placement interfaces; DevicePicker.Show(Rect), for one, requires coordinates expressed in logical pixels, DIPs, relative to the display.

A player either declares per-monitor DPI awareness or it does not. A per-monitor-aware player receives true physical coordinates, and your 3840 lands exactly on the second panel's left edge. A player without that declaration receives the logical grid, and the 3840 physical pixels you meant become 2560 logical pixels on the way in. The one-minute check below tells you which grid your player uses.

Symptoms and what each one points to

  • The player runs, the second screen shows the desktop. The window sits outside the virtual desktop's logical bounds. Work the arithmetic in the example below.
  • Part of the window shows, sliced at an edge. One coordinate is off, usually the top: the map shows the panels middle-aligned, the second panel begins partway down, and top 0 floats above it.
  • The window fills the panel but looks soft. The player rendered at the logical size and Windows stretched the result, the same class of fault as a 4K player that only renders at 1080p.
  • It worked on two identical panels and broke when the primary became 4K. The scale factor moved. Windows derives its recommended scale from pixel density: 1080p panels sit unscaled, 4K panels land at 150 or 200 percent.
  • No player process at all. The player failed to launch. That is a different fault and nothing on this page applies.

The one-minute check

Right-click the desktop and open Display settings. Turn scaling off on each display and start the player again. Logical pixels now equal physical pixels, the two grids merge, and the numbers in the profile mean what they say.

If the window appears, the profile holds physical pixels and the player places them on the logical grid. Apply Fix A or Fix B below. If the screen is still empty, the top coordinate is the remaining suspect: with no scaling, a middle-aligned 1080p panel under a 2160-line primary begins 540 px down, so top 0 leaves half the window above the panel.

If your player logs the rectangle it applied, read the four numbers back before you change anything. Numbers that disagree with the profile tell you the conversion happened inside the player.

The fix

Fix A: run both displays at 100 percent. Keep the scale there on both displays. In the Display settings map, drag the second panel until its top edge lines up with the primary's top edge, so the top coordinate is 0. Set the profile to left 3840, top 0, size 1920 x 1080, and start the player again. The window lands edge to edge, pixel for pixel.

Fix B: keep 150 percent and convert. Divide every coordinate by 1.5. Left 3840 becomes 2560, top stays 0 with the tops aligned, and size 1920 x 1080 becomes 1280 x 720. Windows stretches the window back up by 1.5 to fill the panel, so content renders at 1280 x 720 and small text softens.

Scale on both displays Left Top Size
100 percent 3840 0 1920 x 1080
150 percent 2560 0 1280 x 720

Both rows assume the panels are top-aligned in the map.

Example: 4K TV, 1080p panel, both at 150 percent

A meeting room PC runs a 3840 x 2160 TV as the primary and a 1920 x 1080 panel to its right, both at 150 percent, middle-aligned in the map. The profile says left 3840, top 0, size 1920 x 1080, and the screen stays empty. Here is where the window went.

Primary logical width: 3840 px ÷ 1.5 = 2560.

Secondary logical width: 1920 px ÷ 1.5 = 1280.

Desktop logical width: 2560 + 1280 = 3840.

The window's left edge sits at 3840, which is the right edge of the entire desktop, so zero of its 1920 logical pixels touch a panel. By coincidence the desktop's logical width equals the TV's physical width, which is why the number felt so right.

The vertical axis fails too. Primary logical height: 2160 px ÷ 1.5 = 1440. Secondary logical height: 1080 px ÷ 1.5 = 720. Middle alignment starts the secondary at (1440 - 720) ÷ 2 = 360, so top 0 floats the window 360 px too high even with the horizontal corrected.

Corrected at 150 percent: left 2560, top 360, size 1280 x 720. Corrected with scaling off and tops aligned: left 3840, top 0, size 1920 x 1080.

What to set

Recommendation: Run both displays at 100 percent, align the panel tops in the Display settings map, and ship the profile as left 3840, top 0, size 1920 x 1080. Keep 150 percent only when someone does desktop work on that PC; then ship left 2560, top 360 with the panels middle-aligned, size 1280 x 720, and accept the softer render.

When a second player instance helps

Run a second instance on the same PC only when the two screens must show different schedules. Each instance still places its window on the same grid, so each profile still needs its numbers from this page. One instance is enough when both screens mirror one show.

When every panel runs the same resolution, one player spanning them avoids window placement altogether, and one Android signage player driving multiple displays covers that layout. When the second screen only has to run a scheduled show, a purpose-built signage display removes the problem at the root: the player software ships inside the screen and plays from a memory card or USB stick, with no subscription and no window to place.

Check it before you call it done

Play a video on each panel and watch 60 seconds. Mixed-resolution desktops carry one more fault with the same smell: video that stutters on the 4K monitor but not on 1080p is a decoding problem with its own fix. Then reboot the PC once and confirm the window comes back on the second panel on its own.

Questions

Why did the same profile work when both screens were 1080p?

Two 1080p panels almost always run unscaled, where one logical pixel equals one physical pixel. The offset you computed from the panel width was already the offset on the player's grid. The 4K primary brought a 150 percent recommendation, and the two grids separated from that moment.

Does no scaling on a 4K TV hurt the signage content?

No. Scaling sets the size of icons, menus and window chrome. A player running full screen fills the panel's native grid regardless, so the show keeps its sharpness. Only the desktop around it gets small, and nobody sees that on a signage machine.

How do I work out the offset for any pair of panels?

With no scaling, the left offset equals the primary's pixel width: 1920 for a 1080p primary, 3840 for a 4K primary. Add a top offset only when the map shows the panels middle-aligned: half the height difference, so 540 px for a 2160-line primary over a 1080-line panel. At any other scale, divide both results by the scale factor.

Should I run a second player instance for the second screen?

Run one only when the two screens must show different schedules. Each profile still needs the numbers from this page, and a single instance with one display profile is enough when both screens show the same content.

Planning information, not legal or engineering advice. Rules differ by place: check codes and permits with your local authority and your licensed trades.

Keep reading

Build your signAsk for a quote