We address the problem of precoding in downlink multi-user MIMO communications using SDMA. In this setup, multiple antennas are used at the base station and at the terminals. A double level of spatial multiplexing is present: the users are spatially multiplexed (SDMA) and each user receives spatially multiplexed symbol streams (SDM). The cumulative multi-user and multi-stream interference is a potential performance limitation in this scheme. To mitigate this, we propose a linear precoder that has the following properties: it can be computed analytically; it can be computed without iterations; it improves on the state-of-the-art solution based on the generalized eigenvectors; it is computed separately for each user. Although the formulation of the multi-user precoding can be separated from the multi-stream precoding, our solution optimizes the multi-user separation taking the multi-stream processing into account. The performance of our precoding scheme is assessed by simulations.