This is too long for a comment but addresses the case where matrix X entries are rational.

In detail for the case n = 2

In the case where the matrix X has 0 for the bottom right entry and p/q for the top right entry (gcd (p,q) = 1), choose Y1 to have the entries 0, 1, 1, 0 then B1 = Y1X is lower triangular. Choose Y2 = diagonal with entries sgn($B1_{11}$) and sgn($B1_{22}$); now B2= Y2Y1X is lower triangular with non-negative diagonal entries, so has non-negative spectrum.

WLOG reduce to the case where the matrix X has 1 for the bottom right entry and p/q for the top right entry (gcd (p,q) = 1). Then choose integers u, v so that qv+pu =1. If Y1 has the entries q, -p, u, v then B1 = Y1X is lower triangular, choose Y2 = diagonal with entries sgn($B1_{11}$) and sgn($B1_{22}$); now B2= Y2Y1X is lower triangular with non-negative diagonal entries, so has non-negative spectrum.

I am fairly certain that one can extend to M2(R) by choosing a suitable approximation p/q for any real top right entry, but I have not worked out the details completely.

This argument (i.e., reduction of an arbitrary matrix to lower triangular form via multiplication of integer matrices with determinant 1) used for M2(Q) can be extended to Mn(Q) by a technique similar to Gaussian elimination. as follows:

```
FOR j = n TO 2
FOR i = 1 TO n-1
IF Xij = 0 THEN Y = Identity
ELSIF Xjj = 0 THEN Y = Y_rowswap(i,j)
ELSE Y = Y_zero(i,j)
ENDIF
X = YX
ENDFOR
ENDFOR
```

Y_rowswap (i,j) is the permutation matrix that swaps rows i and j and leaves the other rows the same.

Y_zero (i, j) is a matrix with the following entries:

q (row i,column i),

-p(row i,column j),

u(row j, column i),

v(row j,column j),

other diagonal entries = 1,

other off-diagonal entries = 0

where qXij-pXjj= 0 and qv + pu = 1

So maybe someone else (the OP?) can make the extension to Mn(R) by an argument approximating real entries by suitable rational entries...