Index: src/apps/screenshot/Screenshot.h
===================================================================
--- src/apps/screenshot/Screenshot.h	(revision 36332)
+++ src/apps/screenshot/Screenshot.h	(working copy)
@@ -30,7 +30,6 @@
 	bool				fArgvReceived;
 	bool				fRefsReceived;
 	int32				fImageFileType;
-	int32				fTranslator;
 	BCatalog				fCatalog;
 };
 
Index: src/apps/screenshot/ScreenshotWindow.cpp
===================================================================
--- src/apps/screenshot/ScreenshotWindow.cpp	(revision 36332)
+++ src/apps/screenshot/ScreenshotWindow.cpp	(working copy)
@@ -98,8 +98,7 @@
 
 ScreenshotWindow::ScreenshotWindow(bigtime_t delay, bool includeBorder,
 	bool includeMouse, bool grabActiveWindow, bool showConfigWindow,
-	bool saveScreenshotSilent, int32 imageFileType, int32 translator,
-	const char* outputFilename)
+	bool saveScreenshotSilent, int32 imageFileType, const char* outputFilename)
 	:
 	BWindow(BRect(0, 0, 200.0, 100.0), TR("Retake screenshot"), B_TITLED_WINDOW,
 		B_NOT_ZOOMABLE | B_NOT_RESIZABLE | B_QUIT_ON_WINDOW_CLOSE |
@@ -117,7 +116,6 @@
 	fSaveScreenshotSilent(saveScreenshotSilent),
 	fOutputFilename(outputFilename),
 	fExtension(""),
-	fTranslator(translator),
 	fImageFileType(imageFileType)
 {
 	if (fSaveScreenshotSilent) {
@@ -185,7 +183,6 @@
 		
 		case kImageOutputFormat:
 			message->FindInt32("be:type", &fImageFileType);
-			message->FindInt32("be:translator", &fTranslator);
 			fNameControl->SetText(_FindValidFileName(fNameControl->Text()).String());
 			_UpdateFilenameSelection();
 			break;
@@ -616,27 +613,32 @@
 		return baseName;
 	
 	BTranslatorRoster* roster = BTranslatorRoster::Default();
-	const translation_format* formats = NULL;
 
-	int32 numFormats;
-	if (roster->GetOutputFormats(fTranslator, &formats, &numFormats) == B_OK) {
-		for (int32 i = 0; i < numFormats; ++i) {
-			if (formats[i].type == uint32(fImageFileType)) {
-				BMimeType mimeType(formats[i].MIME);
-				BMessage msgExtensions;				
-				if (mimeType.GetFileExtensions(&msgExtensions) == B_OK) {
-					const char* extension;
-					if (msgExtensions.FindString("extensions", 0, &extension) == B_OK) {
-						fExtension.SetTo(extension);
-						fExtension.Prepend(".");
-					} else
-						fExtension.SetTo("");
+	translator_id id = 0;
+	if (_FindTranslator(fImageFileType, &id) == B_OK) {
+
+		const translation_format* formats = NULL;
+	
+		int32 numFormats;
+		if (roster->GetOutputFormats(id, &formats, &numFormats) == B_OK) {
+			for (int32 i = 0; i < numFormats; ++i) {
+				if (formats[i].type == uint32(fImageFileType)) {
+					BMimeType mimeType(formats[i].MIME);
+					BMessage msgExtensions;				
+					if (mimeType.GetFileExtensions(&msgExtensions) == B_OK) {
+						const char* extension;
+						if (msgExtensions.FindString("extensions", 0, &extension) == B_OK) {
+							fExtension.SetTo(extension);
+							fExtension.Prepend(".");
+						} else
+							fExtension.SetTo("");
+					}
+					break;
 				}
-				break;
 			}
 		}
 	}
-	
+
 	BPath outputPath = orgPath;
 	BString fileName;
 	fileName << baseName << fExtension;
@@ -855,17 +857,23 @@
 	if (nodeInfo.InitCheck() != B_OK)
 		return B_ERROR;
 
+	translator_id id = 0;
+	if (_FindTranslator(fImageFileType, &id) != B_OK)
+		return B_ERROR;
+
 	int32 numFormats;
 	const translation_format* formats = NULL;
-	if (roster->GetOutputFormats(fTranslator, &formats, &numFormats) != B_OK)
-		return B_OK;
 
+	if (roster->GetOutputFormats(id, &formats, &numFormats) != B_OK)
+		return B_ERROR;
+
 	for (int32 i = 0; i < numFormats; ++i) {
 		if (formats[i].type == uint32(fImageFileType)) {
 			nodeInfo.SetType(formats[i].MIME);
 			break;
 		}
 	}
+
 	return B_OK;
 }
 
@@ -958,3 +966,34 @@
 	}
 	fScreenshot->RemoveChild(&view);
 }
+
+
+status_t
+ScreenshotWindow::_FindTranslator(uint32 imageType, translator_id* id)
+{
+	status_t status = B_ERROR;
+
+	translator_id* translators = NULL;
+	int32 numTranslators = 0;
+	BTranslatorRoster* roster = BTranslatorRoster::Default();
+	roster->GetAllTranslators(&translators, &numTranslators);
+
+	for (int32 x = 0; x < numTranslators && status != B_OK; x++) {
+		int32 numFormats;
+		const translation_format* formats = NULL;
+
+		if (roster->GetOutputFormats(x, &formats, &numFormats) == B_OK) {
+			for (int32 i = 0; i < numFormats; ++i) {
+				if (formats[i].type == imageType) {
+					*id = x;
+					status = B_OK;
+					break;
+				}
+			}
+		}
+	}
+
+	delete [] translators;
+
+	return status;
+}
Index: src/apps/screenshot/ScreenshotWindow.h
===================================================================
--- src/apps/screenshot/ScreenshotWindow.h	(revision 36332)
+++ src/apps/screenshot/ScreenshotWindow.h	(working copy)
@@ -12,6 +12,7 @@
 
 #include <String.h>
 #include <Window.h>
+#include <TranslationDefs.h>
 #include <TranslatorFormats.h>
 
 
@@ -37,7 +38,6 @@
 								bool showConfigWindow = false,
 								bool saveScreenshotSilent = false,
 								int32 imageFileType = B_PNG_FORMAT,
-								int32 translator = 8,
 								const char* outputFilename = NULL);
 	virtual					~ScreenshotWindow();
 
@@ -70,6 +70,8 @@
 
 			status_t		_SaveScreenshot();
 
+			status_t		_FindTranslator(uint32 imageType, translator_id* id);
+
 			PreviewView*	fPreview;
 			BRadioButton*	fActiveWindow;
 			BRadioButton*	fWholeDesktop;
@@ -97,7 +99,6 @@
 			BString			fOutputFilename;
 			BString			fExtension;
 
-			int32			fTranslator;
 			int32			fImageFileType;
 };
 
Index: src/apps/screenshot/Screenshot.cpp
===================================================================
--- src/apps/screenshot/Screenshot.cpp	(revision 36332)
+++ src/apps/screenshot/Screenshot.cpp	(working copy)
@@ -29,8 +29,7 @@
 	BApplication("application/x-vnd.Haiku-Screenshot"),
 	fArgvReceived(false),
 	fRefsReceived(false),
-	fImageFileType(B_PNG_FORMAT),
-	fTranslator(8)
+	fImageFileType(B_PNG_FORMAT)
 {
 	be_locale->GetAppCatalog(&fCatalog);
 }
@@ -136,7 +135,7 @@
 	
 	new ScreenshotWindow(delay, includeBorder, includeMouse, grabActiveWindow, 
 		showConfigureWindow, saveScreenshotSilent, fImageFileType, 
-		fTranslator, outputFilename);
+		outputFilename);
 }
 
 
@@ -166,24 +165,17 @@
 {
 	if (strcmp(name, "bmp") == 0) {
 		fImageFileType = B_BMP_FORMAT;
-		fTranslator = 1;
 	} else if (strcmp(name, "gif") == 0) {
 		fImageFileType = B_GIF_FORMAT;
-		fTranslator = 3;
 	} else if (strcmp(name, "jpg") == 0) {
 		fImageFileType = B_JPEG_FORMAT;
-		fTranslator = 6;
 	} else if (strcmp(name, "ppm") == 0) {
 		fImageFileType = B_PPM_FORMAT;
-		fTranslator = 9;
 	} else if (strcmp(name, "targa") == 0) {
 		fImageFileType = B_TGA_FORMAT;
-		fTranslator = 14;
 	} else if (strcmp(name, "tif") == 0) {
 		fImageFileType = B_TIFF_FORMAT;
-		fTranslator = 15;
 	} else { //png
 		fImageFileType = B_PNG_FORMAT;
-		fTranslator = 8;
 	}
 }
