When a transparent image is rendered to an empty texture, it will appear less opaque than it would had it been rendered normally to screen. Seems like the problem has to do with OpenGL blending the image to the empty texture's background (i.e. glClearcolor).
Here's a screen shot -- the first image is rendered normally to screen. The second is rendered to a new texture, and that texture is then rendered to screen (the difference is obvious). The third image is the workaround; GL blending is disabled before rendering the sprite to a new texture.

Here's the code:
Code:
import org.lwjgl.opengl.GL11;
import org.newdawn.slick.*;
public class ImageBlendTest extends BasicGame {
public ImageBlendTest() {
super("ImageBlendTest");
}
Image hud, hud2, hud3;
public void init(final GameContainer container) throws SlickException {
//regular image
hud = new Image("res/sample.png");
//render-to-texture
hud2 = new Image(hud.getWidth(), hud.getHeight());
Graphics g = hud2.getGraphics();
g.drawImage(hud, 0, 0);
g.flush();
//workaround
hud3 = new Image(hud.getWidth(), hud.getHeight());
g = hud3.getGraphics();
g.clear(); //this will trigger a "predraw()" on the new graphics
GL11.glDisable(GL11.GL_BLEND);
hud.draw();
GL11.glEnable(GL11.GL_BLEND);
g.flush();
}
public void update(GameContainer container, int delta) throws SlickException {
}
public void render(GameContainer container, Graphics g) throws SlickException {
hud.draw(20, 50);
hud2.draw(200, 50);
hud3.draw(380, 50);
}
public static void main(String[] argv) {
try {
AppGameContainer container = new AppGameContainer(new ImageBlendTest());
container.setDisplayMode(800, 600, false);
container.start();
} catch (SlickException e) {
e.printStackTrace();
}
}
}
sample.png:

Edit: Here is a better workaround; thanks to MatthiasM
Code:
hud3 = new Image(hud.getWidth(), hud.getHeight());
g = hud3.getGraphics();
g.clear();
GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_SRC_ALPHA);
hud.draw();
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
g.flush();