Hostia, no sabía que tenían la función cImageAddWaterMark().
Dices que sale abajo derecha y quieres ponerlo arriba derecha?
Pues supongo que con
$positionY = 5; //el 5 para dejar un pequeño margen
Yo había pensado de otra manera, aunque esa es mejor (además pensaba que querías para los avatares, no para las imágenes de las galerías de los usuarios

) De todas maneras la dejo aquí:
//Aunque está para subir los avatares, también vale para las fotos
//Archivo controllers/profile.php
//Busca
if(!cImageCreateThumb( $file['tmp_name'] , $storageThumbnail , $file['type'] ))
{
$mainframe->enqueueMessage(JText::sprintf('CC ERROR MOVING UPLOADED FILE' , $storageThumbnail), 'error');
}
//Añade después
//Marca de agua para la imagen normal
$waterdir = JPATH_ROOT.DS."images".DS."water.png"; //ruta de la marca de agua para las imágenes normales
$water = imagecreatefrompng($waterdir); //cargar marca de agua
$photo = imagecreatefromjpeg($storageImage); //cargar imagen normal
$posX = (imagesx($photo)/2)-(imagesx($water)/2); //para centrar la marca de agua. Si lo quieres a la derecha: $posX = imagesx($photo) - imagesx($water) - 5;
$posY = (imagesy($photo)/2)-(imagesy($water)/2); //para centrar la marca de agua. Si lo quieres arriba: $posY = 5;
imagecopy($photo, $water, $posX, $posY, 0, 0, imagesx($water), imagesy($water)); //añadir marca de agua a la imagen normal
unlink($storageImage); //eliminar imagen normal creada por jomsocial
copy($photo, $storageImage); //copiar la nueva imagen
imagedestroy($photo); //vaciar memoria de la imagen normal
imagedestroy($water); //vaciar memoria de la marca de agua
//Marca de agua para la imagen en miniatura
$waterdir = JPATH_ROOT.DS."images".DS."water_mini.png"; //ruta de la marca de agua para las imágenes en miniatura
$water = imagecreatefrompng($waterdir); //cargar marca de agua
$photo = imagecreatefromjpeg($storageThumbnail); //cargar imagen en miniatura
$posX = (imagesx($photo)/2)-(imagesx($water)/2); //para centrar la marca de agua. Si lo quieres a la derecha: $posX = imagesx($photo) - imagesx($water) - 5;
$posY = (imagesy($photo)/2)-(imagesy($water)/2); //para centrar la marca de agua. Si lo quieres arriba: $posY = 5;
imagecopy($photo, $water, $posX, $posY, 0, 0, imagesx($water), imagesy($water)); //añadir marca de agua a la imagen normal
unlink($storageThumbnail); //eliminar imagen en miniatura creada por jomsocial
copy($photo, $storageThumbnail); //copiar la nueva imagen
imagedestroy($photo); //vaciar memoria de la imagen en miatura
imagedestroy($water); //vaciar memoria de la marca de agua
No lo he probado, pero creo que está bien
PD: En el archivo controllers/groups.php también está la función de uploadAvatar, no sé para qué servirá la de groups