Setting aside the idea that data are supposed to be pummeled with sufficient vigor to conform to the expectations of your PI, it would be helpful to know the purpose of the heatmap. Is the goal to show that certain samples are similar, or is it to show groups of genes that appear to be acting similarly across groups of samples? The former is probably the most common use case, in my experience.
If you are trying to show the general grouping structure of your samples, you might instead consider using principal components analysis (PCA) plots, which tend to be a bit more informative. But I am betting this will not suffice.
There is no simple way to 'correct' the heatmap, primarily because it isn't incorrect (your PI's opinion notwithstanding). It just is. In other words, clustering isn't an inferential process where you can say that 'this cluster is different than what I would expect to see by chance'. You are just grouping samples (and/or genes), based on how 'close' they are to each other, where the measure of closeness can be defined many different ways.
How the samples group is dependent on what genes you are using. So adding or subtracting genes will have an effect on the heatmap. In addition, how you define the distance between samples will affect the results as well. If you look at ?dist, you can see all the available choices. An additional choice is 1 - correlation (e.g., if you do
distfun <- function(x) as.dist(1-cor(t(x)))
and then in your call to heatmap.2(), you say
heatmap.2(<some args>, distfun = distfun)
then you will use 1-correlation as your distance measure.
You can also play around with the agglomeration methods (used to define the position of the groups). In other words, when you start out, you just have 27 samples, and their distances from each other. The first step involves finding the two closest samples, and saying they are a group. But now instead of having a single point for all 27 samples, you have 25 samples and a group of two samples, so you now need to define where that group of two samples is. There are any number of ways to do that, so see the agglomeration methods under ?hclust for your choices.